RewriteRule werkt bij de ene php?sub= wel en bij de ander niet.
Ik heb al een hoop geprobeerd, maar ik kom er niet uit.
Pagina website.nl/about/ werkt niet meer, maar wel via website.nl/about/index en beide werkten altijd wel met de huidige htaccess settings en nu niet meer.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
// Header
require_once('include/header.php');
// Pagina's inladen
$sub = strtolower($_GET['sub']);
//
if(strlen($sub) > 0){
if(file_exists('about/'.$sub.'.php')){
include('about/'.$sub.'.php');
}
else{
echo "<h1 class=\"titel\">Page not found.</h1>";
echo "<p>The page doesn't exist or hasn't been found.</p>";
}
}
else{
include('about/index.php');
}
// Footer
require_once('include/footer.php');
?>
// Htaccess settings
RewriteRule ^about/$ about.php [L]
RewriteRule ^about/([A-Za-z0-9-]+)$ about.php?sub=$1 [L]
// Header
require_once('include/header.php');
// Pagina's inladen
$sub = strtolower($_GET['sub']);
//
if(strlen($sub) > 0){
if(file_exists('about/'.$sub.'.php')){
include('about/'.$sub.'.php');
}
else{
echo "<h1 class=\"titel\">Page not found.</h1>";
echo "<p>The page doesn't exist or hasn't been found.</p>";
}
}
else{
include('about/index.php');
}
// Footer
require_once('include/footer.php');
?>
// Htaccess settings
RewriteRule ^about/$ about.php [L]
RewriteRule ^about/([A-Za-z0-9-]+)$ about.php?sub=$1 [L]
Pagina die wel werkt via de url website.nl/contact/ en ook via website.nl/contact/index
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
// Header
require_once('include/header.php');
// Pagina's inladen
$sub = strtolower($_GET['sub']);
//
if(strlen($sub) > 0){
if(file_exists('contact/'.$sub.'.php')){
include('contact/'.$sub.'.php');
}
else{
echo "<h1 class=\"titel\">Page not found.</h1>";
echo "<p>The page doesn't exist or hasn't been found.</p>";
}
}
else{
include('contact/index.php');
}
// Footer
require_once('include/footer.php');
?>
// Htaccess settings
RewriteRule ^contact/$ contact.php [L]
RewriteRule ^contact/([a-zA-Z]+)$ contact.php?sub=$1 [L]
// Header
require_once('include/header.php');
// Pagina's inladen
$sub = strtolower($_GET['sub']);
//
if(strlen($sub) > 0){
if(file_exists('contact/'.$sub.'.php')){
include('contact/'.$sub.'.php');
}
else{
echo "<h1 class=\"titel\">Page not found.</h1>";
echo "<p>The page doesn't exist or hasn't been found.</p>";
}
}
else{
include('contact/index.php');
}
// Footer
require_once('include/footer.php');
?>
// Htaccess settings
RewriteRule ^contact/$ contact.php [L]
RewriteRule ^contact/([a-zA-Z]+)$ contact.php?sub=$1 [L]
De overige subpagina's, welke aangeduid worden zoals website.nl/about/me & website.nl/about/you enz. werken wel naar wens, maar ik krijg de url niet meer werkend zonder een toevoeging achter de folder about: website.nl/about/ en om nou in de url index erachter te zetten staat niet mooi. Heeft iemand een idee? Ik vind het erg raar dat bij de ene folder het gewoon werkt naar wens en bij de ander niet, daarom kan ik het ook niet verklaren.
Gewijzigd op 02/10/2013 12:49:28 door J L
Zie hier eens naar
http://www.phphulp.nl/php/tutorial/overig/url-vriendelijkheid-seo/691/van-n-naar-oneindig/1811/
Het systeem dat daar is opgezet, is het volgende: alles wordt naar 1 $_GET vertaald. Dus slechts 1 of twee lijnen redirect.
bv. op pagina
mijnsite.com/agenda/15/edit/
-> dit wordt vertaald naar
index.php?p=agenda/15/edit/
ofwel
$_GET['p'] = 'agenda/15/edit/';
Met een explode op karakter '/' krijg je dus een array aan gegevens. En dan is het aan jou om die structuur zinnig te maken.
bv in dit geval:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
// $_GET['p'] = 'agenda/15/edit/';
$get = explode('/', $_GET['p']);
// $get[0] = de pagina, hier dus 'agenda'
// $get[1] is de id van het agenda item
// $get[2] is 'edit', wat betekent dat op het formulier staan om een content node (een agenda item) aan te passen als moderator of auteur van de node.
?>
// $_GET['p'] = 'agenda/15/edit/';
$get = explode('/', $_GET['p']);
// $get[0] = de pagina, hier dus 'agenda'
// $get[1] is de id van het agenda item
// $get[2] is 'edit', wat betekent dat op het formulier staan om een content node (een agenda item) aan te passen als moderator of auteur van de node.
?>
Het resultaat is dat die .htaccess maar 1 keer moet worden geschreven; altijd zal werken, voor gelijk welke situatie.
Jij moet gewoon in je php-logica een consistent systeem hebben.