Hallo
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
Heb ik dit niet goed genoeg uitgelegd?

Moderator edit:

Bumpen:
Twee of meer keer achter elkaar in je eigen topic posten heet bumpen.

Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de knop om je tekst aan te passen.
Ik gebruik mod rewrite..

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:

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]


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:

SELECT * FROM tabel WHERE title LIKE '%De+naam+van+je+bericht%'


Kijk verder even naar deze functies: [php]urlencode[/php] en [php]urldecode[/php]. Succes :)
Goede uitleg bas!
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.
een ID nummer is niet nuttig voor een gebruiker om in een URL adres te zien. Je geeft de datum al mee. De kans dat een titel exact hetzelfde is op dezelfde datum is vrij klein.

De datum match je natuurlijk ook, maar dan letterlijk:

WHERE year = $1, month = $2, day = $3.
Hmm snap alleen de basis van mod_rewrite. De uitleg wist ik al, maar toch nog even een herhaling. Maar de rest als:

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

Reageren