[Mod_rewrite]Hoe krijg ik dit voor mekaar?
Ik heb een vraagje over mod_rewrite.
Ik kan wel dit doen:
Normale url:
http://www.domein.nl/index.php?waard1=haha&waarde2=niks
naar
www.domein.nl/haha/niks/
Maar nu wil ik het anders doen.
Stel ik heb een simpele form met in het tabel een id, title (de rest maakt even niks uit). En de url ziet er dan als volgend uit in een normale simpele form.
domein.nl/index.php?id=10
maar nu wil ik het SEO vriendelijk doen. En het als volgde hebben:
domein.nl/index.php/10-En-hier-de-title-van-de-form.html
Dus de id en dan de naam gestrip van alle tekens die niet mogen voorkomen en spaties vervangen door een -. Maar ik vraag niet om de heleaplicatie te maken. Maar ik weet niet hoe ik de mod_rewrite moet maken?
Alvast bedankt,
DDragonz
Gewijzigd op 01/01/1970 01:00:00 door DDragonz
Dat is een module van Apache, standaard is die wel meegenomen in de Apache installatie..
Dit is een voorbeeldje van mijn .htaccess bestand die je in de ROOT van je httpdocs moet plaatsen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
php_value session.use_trans_sid "0"
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} -f [OR]
RewriteCond %{SCRIPT_FILENAME} -d
RewriteRule .* - [L]
RewriteRule ^links/?$ links.php?url=$1 [QSA,L]
RewriteRule ^links/([^/]+)/?$ links.php?url=$1 [QSA,L]
RewriteRule ^cat/([^/]+)/?$ cat.php?cat=$1 [QSA,L]
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/([^/]+)/?$ message.php?y=$1&m=$2&d=$3&title=$4 [QSA,L]
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} -f [OR]
RewriteCond %{SCRIPT_FILENAME} -d
RewriteRule .* - [L]
RewriteRule ^links/?$ links.php?url=$1 [QSA,L]
RewriteRule ^links/([^/]+)/?$ links.php?url=$1 [QSA,L]
RewriteRule ^cat/([^/]+)/?$ cat.php?cat=$1 [QSA,L]
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/([^/]+)/?$ message.php?y=$1&m=$2&d=$3&title=$4 [QSA,L]
Het zijn dus gewoon regular expressions die ik gebruik.. Ik ben er niet zo'n ster in maar hier wat uitleg:
^ = Vooraan beginnen
([0-9] = Cijfers van 0 t/m 9
{4} = 4 cijfers lang
/ = de slash in je URL adres
Iedere keer dat je ( en ) gebruikt, maak je een nieuwe variabele aan. Dus: $1, $2, $3 enzovoort. Die gebruik je na de regular expression, bijvoorbeeld:
message.php?y=$1&m=$2&d=$3&title=$4
$1 = dus ([0-9]{4}) -> 0 t/m 9, 4 cijfers lang
$3 = dus ([0-9]{2}) -> 0 t/m 9, 2 cijfers lang
Je roept hier URL adressen mee aan zoals:
http://website.nl/2007/04/02/De+naam+van+je+bericht/
$4 is dus "De+naam+van+je+bericht". Hierbij voer je een query uit zoals:
Kijk verder even naar deze functies: urlencode en urldecode. Succes :)
Alleen zou ik toch nog wel het id meegeven in de url dat is makkelijker voor je query's uit te voeren.
Want als je nu 2 titels hebt die bijna hetzelfde zijn gaat het niet goed.
De datum match je natuurlijk ook, maar dan letterlijk:
WHERE year = $1, month = $2, day = $3.
php_value session.use_trans_sid "0"
Options +FollowSymLinks
en
RewriteCond %{SCRIPT_FILENAME} -f [OR]
RewriteCond %{SCRIPT_FILENAME} -d
RewriteRule .* - [L]
Snap ik niet, maar dat zal ik eens googlen. En persoonlijk zou ik het veranderen naar http://website.nl/2007-04-02/De+naam+van+je+bericht/
Dat gaat toch ook nog of niet? En kan je die + ook in het url gebruiken? Maar het is beter om - te gebruik (SEO). Want dan zal google ze als lossen worden zien.
Als iemand "De naam je bericht" intikt zal ie dit ook vinden.
edit:
php_value session.use_trans_sid "0"
Over dat eerst heb ik gevonden waarvoor het dient. En het is zeer belangrijk als je een goeie SEO wil toepassen en je sessions gebruikt waarbij de gebruiker de cookies uit heeft staan.
Alleen daar gebruiken ze:
php_value session.use_only_cookies 1
php_value session.use_trans_sid 0
Hier staat een oplossing, maar dit luikt mij niet echt goed. Kan het niet anders?
http://www.optiseo.be/blog/index.php?pagina=blogi.php&b=125
Gewijzigd op 01/01/1970 01:00:00 door DDragonz