Archief - Clean URL - graag uitleg

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Ingis

Legacy Member
hey

ik probeer nu al een tijdje om met clean urls aan de slag te gaan maar het wil maar niet lukken...
Ofwel krijg ik 500error ofwel gebeurd er niets :s
Dus ik zoek eigenlijk iemand die het me stap voor stap kan uitleggen wat ik moet doen aangezien ik niets deftigs vind op internet voorlopig (.htaccess lukt maar ik weet niet wat ik daarna moet doen aangezien het niet werkt).

voorbeeldje van url:
index.php?user=admin
moet worden
/user/admin

of
index.php?y=2010&news=dit-is-een-nieuwtje
-> /2010/dit-is-een-nieuwtje

alvast bedankt ^^

groetjes
Lien

edit:
okay, het is me eindelijk deels gelukt... wat wel raar is, is dat wanneer ik op een bepaalde pagina zit (bv ../page/news) en naar een andere pagina wil gaan (bv ../2010/dit-is-een-nieuwtje) dan blijft het voorstukje (page in dit geval) staan :s
als ik voor elke link het volledige adres zet (in dit geval, http://localhost/test/) dan werkt het wel... maar is er ook een schonere manier om dit op te lossen?

Unrach

Legacy Member
verander uw link (href="...") van "2010/dit-is-een-nieuwtje" naar "/2010/dit-is-een-nieuwtje".
Dan gaat hij terug naar uwe root

Ingis

Legacy Member
maar das het probleem... dat hij naar de root gaat had ik al door ^^ maar ik werk in subfolders (op localhost)
en heeft dat ook geen effect als je op subdomeinen werkt?

edit:
met ../ ervoor gaat het wel buiten de eerste keer dat je moet klikken :p dus echt ideaal is het niet te noemen :p

Curahee Q

Legacy Member
Dan werk je fout als het niet gaat.

Ik zal hier ff een uiteenzetting neerpoten hoe ik het doe en hoe het eigenlijk het best wordt gedaan.

In je .htaccess zet je hetvolgende neer
Code:
RewriteEngine On

AddHandler application/x-httpd-php .inc

# Controleer of het geen bestaande directory is
RewriteCond %{REQUEST_FILENAME} !-d
# Controleer of het geen bestaand bestand is
RewriteCond %{REQUEST_FILENAME} !-f
# Rewrite vervolgens alles naar index.php
RewriteRule ^ index.php [L]

Alles wordt verwezen naar je index.php tenzij het een directory is of een bestaande file. In je index.php ga je je url helemaal uiteen halen en ga je de juiste data uit de database halen of includen.

Het strippen (of uiteenhalen) van de url kan bijvoorbeeld op volgende manier gebeuren
PHP:
$url = $_SERVER['REQUEST_URI'];
$url = trim($url, "/");

$split = explode('/', $url);

In array $split zitten nu al je delen opgesplitst en kan je verder werken met elk stukje. Op deze manier moet je in je .htaccess niet voor elke mogelijkheid iets gaan liggen verzinnen maar gebeurt alles aan de hand van php.

Waar ik persoonlijk ook van hou is dat er achter elke url .html staat. Op deze website (http://www.it-sourcecode.com/) waar ik aan bezig ben wordt dat gedaan. Het oogt properder dat het afsluit met een extensie dan dat het gewoon afgesloten wordt met een string. De extensie kan je er zelf wel afhalen met php.

Heel leuk op deze manier is ook dat als je met een database werkt en je wilt content inladen op een pagina dat je een kolom seoID kan aanmaken met bijvoorbeeld hetvolgende in "280502010/string-als-immutable-object.html". Als je dan naar de pagina http://www.it-sourcecode.com/programmeren/280502010/string-als-immutable-object.html surft kijk ik gewoon in mijn database naar de kolom waar de 2 laatste stukjes tekst van mijn url staan (deze dus 280502010/string-als-immutable-object.html) en dat is mijn artikel.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan