Hallo,

Momenteel gebruik ik een htaccess om alle URL's na de forward slash van mijn domein door te sturen naar een bepaald bestand, namelijk redirect.php. Is er enige mogelijkheid om bepaalde URL's te excluden? Ik wil bijv. mijn contact pagina nog wel gewoon laten zien (welke voorheen op /contact/) stond en via htaccess en een page class wordt geinclude vanuit een map/contact.inc.php..

Ik gebruik de volgende htaccess file:
<?php
Options +FollowSymlinks
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ http://example.com/redirect.php?id=$1 [R]

#Dit was de code die voorheen werd gebruikt voor de pagina requests:
#RewriteRule ^(.*)$ /index.php
?>

Hoor graag :)

Gr Robin
Waarom de force redirect flag achter je rewriterule?

En als alles wordt doorverwezen naar redirect.php dan kan je toch in redirect.php hetgeen aanpassen wat je wilt?
De manier die jij gebruikt heeft juist het voordeel van een eenvoudige htaccess en dat je de rest afhandelt middels php.

Kijk ook eens naar bootstrap (google) en zie daar hoe je simpel maar zeer effectief mooie en eenduidige url's kan maken en parsen. Door middel van de $_SERVER['REQUEST_URI'] kan je de url's parsen en de juiste informatie tonen.

Hoe ik het gebruik:
www.domein.nl/controller/action/id?querystring....

De controller geeft aan welk bestand geinclude moet worden. De action geeft aan wat er precies moet gebeuren (bijvoorbeeld wijzigen, toevoegen, verwijderen, bekijken, etc.). En de id is optioneel en geeft aan welk onderdeel weergegeven moet worden.

Er zijn zeer veel methoden om vriendelijke url's te genereren. Welke het beste is hangt van jouw systeem af.

De htaccess die ik gebruik:

RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* /index.php?%{QUERY_STRING}
Hi Arjan,

Het is voor een url shortener, dus vandaar dat er geen method tussen kan. Ik begrijp de opbouw van je URL volledig, maar is in dit geval niet echt toepasselijk. Mijn idee was inderdaad ook om het met PHP af te handelen, maar dan zou ik alsnog de URL 'http://example.com/redirect.php?id=contact' in mijn adresbalk houden. Er zal ongetwijfeld een manier via htaccess zijn hiervoor.

Wat de force flag daarachter doet weet ik niet, ik ben een leek op het gebied van htaccess en deze is samengesteld d.m.v. diverse bronnen op het internet..
Nee, je houdt die redirect.php?id=contact niet in de adressenbalk als je de [R] weghaalt. Het voordeel van vriendelijke url's is op jouw manier geheel verdwenen.
Arjan - op 18/05/2011 11:08:43

Nee, je houdt die redirect.php?id=contact niet in de adressenbalk als je de [R] weghaalt.

Ah, ga het even proberen :-). En wat is precies de functie van die 'force flag' als ik vragen mag?

Die zorgt ervoor dat een redirect plaatvindt in plaats van een onzichtbare rewrite. Een redirect zorgt er voor dat de url (zichtbaar) herschreven wordt naar redirect.php?id=....
Arjan - op 18/05/2011 11:11:07

Die zorgt ervoor dat een redirect plaatvindt in plaats van een onzichtbare rewrite. Een redirect zorgt er voor dat de url (zichtbaar) herschreven wordt naar redirect.php?id=....

Top, thanks voor je hulp! Kom er zo wel uit denk ik :-)

Reageren