htaccess vraagje

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ozzie PHP

Ozzie PHP

10/06/2011 01:12:46
Quote Anchor link
Hallo,

In mijn htaccess bestand staat (o.a.) dit:

RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} .(inc|ini|log|p?ht.*|php.*|txt)$
RewriteRule ^(.*)$ index.php?route=$1 [QSA,L]

Hiermee zorg ik dat alles wordt doorgestuurd naar index.php en dat alles wat achter www.mijnsite.nl/ staat wordt opgeslagen in de variabele $_GET['route'], bijvoorbeeld:

www.mijnsite.nl/test

Op dit moment kan ik de waarde $_GET['route'] opvragen en die zal als waarde 'test' geven.

So far so good. Dit lukt allemaal prima. Echter, nu heb ik het volgende probleem. Zodra het gedeelte achter www.mijnsite.nl/ een mapnaam bevat, dan wordt ineens de url aangepast. Stel dat in de map waarin index.php staat een map 'testen' staat. Als ik nu dit intyp in de browser:

www.mijnsite.nl/testen

dan verandert de url ineens in www.mijnsite.nl/testen/?route=testen

Ineens wordt dan die GET variabele achter de url geplakt en dat is niet de bedoeling. Iemand een idee hoe ik dat kan oplossen?
Gewijzigd op 10/06/2011 01:14:17 door Ozzie PHP
 
PHP hulp

PHP hulp

14/02/2025 08:40:00
 
Jelmer -

Jelmer -

10/06/2011 01:30:44
Quote Anchor link
Die [OR] achter je eerste RewriteCond, waar zijn die voor en zijn die flags nodig? Die R ruikt naar Redirect.

Zelf gebruik ik al sinds jaar en dag deze 4 regels:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$    index.php?route=$1  [QSA,L]

Rewrite alles wat niet bestaat naar index.php?route=. Statische bestanden zoals plaatjes en css bestaan wel, dus de RewriteCond regels zijn niet allebei waar, dus die rewrite hij niet en doet hij automatisch goed.
 
Ozzie PHP

Ozzie PHP

10/06/2011 01:36:38
Quote Anchor link
Die flags zijn nodig om de query string door te geven (QSA) en die L is volgens mij dat dat het laatste is wat hij moet uitvoeren. Welke R bedoel jij? Jouw optie geeft vergelijkbaar resultaat... :(

TOELICHTING HTACCESS:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
RewriteCond %{REQUEST_FILENAME} !-f [OR] // ALS HET BESTAND NIET BESTAAT
RewriteCond %{REQUEST_FILENAME} .(inc|ini|log|p?ht.*|php.*|txt)$ // OF EINDIGT OP EEN BEPAALDE EXTENSIE
RewriteRule ^(.*)$ index.php?route=$1 [QSA,L] // DAN DOORSTUREN NAAR INDEX.PHP


OM HET NOG DUIDELIJKER UIT TE LEGGEN (HOOP IK):

Dit is de WWW map op de server:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
[testen]
index.php
.htaccess


[testen] is een directory.

Ik typ in de browser dit:
www.mijnsite.nl/bla
echo $_GET['route] geeft als waarde 'bla'
De url in de browser verandert niet.

Ik typ in de browser dit:
www.mijnsite.nl/testen (let op, testen is dezelfde naam als de directory!)
echo $_GET['route] geeft als waarde 'testen'
De url in de browser verandert in www.mijnsite.nl/testen/?route=testen.
Gewijzigd op 10/06/2011 01:51:09 door Ozzie PHP
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.