Momenteel ben ik bezig een vrij simpele site te maken om me wat te oefenen met mod_rewrite. De site moet benaderbaar zijn onder url's als /artikelen/12200/hoe_maak_je_een_site.html. SEO zoals het hier op T.net ook gebeurd dus. Nu heeft de site een zelfgebouwd cms in de map "backend" en deze map wil ik ook benaderbaar maken onder de url "achterkant/"
Op de achterkant hoeft vervolgens geen rewriting meer plaats te vinden. De voorkant krijgt door welke "mappen" er aangevraagd werden en gaat op basis daarvan bepalen welke content er getoond gaat worden.
Ik krijg het echter niet voor elkaar om op de map "backend" geen rewriting plaats te laten vinden. Dit gaat alleen goed als ik de rewriterule voor de basissite wegcomment. Hieronder mijn .htaccess:
Momenteel staat de site op een testservertje van mezelf in de map dfa/ vandaar regel 2.
Met regel 4 probeer ik te voorkomen dat als er een bestaand bestand opgevraagd wordt er aan rewriting gedaan wordt.
Regel 5 zou de genoemde mappen en bestanden moeten uitsluiten van rewriting.
Regel 7 moet "achterkant" naar "backend" rewriten en dat werkt ook. Probleem is dat de [L] flag in een per directory context niet werkt heb ik inmiddels begrepen uit de apache doc's. De rewriting begint dan weer gewoon opnieuw met de herschreven url...
Regel negen moet in de overige gevallen regelen dat alle aanvragen bij index.php terechtkomen. Dit werkt ook prima. Index.php krijgt als argument mee welke mappen er aangevraagd werden.
Als ik nu "achterkant/" aanvraag dan krijg ik index.php?arguments=backend/ te zien wat dus ondersteund dat de [L] flag in regel 7 niet lekker werkt. Wat ik dan echter niet begrijp is waarom regel 5 het rewriten niet stopt als de url voor de tweede keer langskomt in de vorm van "backend/"?
Ik kan nu alleen bij "backend/" als ik regel 9 outcomment...
Ik heb de apache doc's over mod_rewrite inmiddels flink doorgelezen maar wordt hier niet veel wijzer van. Afgaande op een aantal van die "beginner guides to mod_rewrite" die je kan vinden zou mijn voorgaande voorbeeld moeten werken volgens mij. Ik kom er alleen maar niet achter waarom dat niet het geval is.
Heeft iemand een idee hoe ik dit op kan lossen? Denk ik de verkeerde kant op of heb ik de verkeerde internetbronnen gelezen? Kan iemand mij op het goede spoor zetten?
Op de achterkant hoeft vervolgens geen rewriting meer plaats te vinden. De voorkant krijgt door welke "mappen" er aangevraagd werden en gaat op basis daarvan bepalen welke content er getoond gaat worden.
Ik krijg het echter niet voor elkaar om op de map "backend" geen rewriting plaats te laten vinden. Dit gaat alleen goed als ik de rewriterule voor de basissite wegcomment. Hieronder mijn .htaccess:
code:
1
2
3
4
5
6
7
8
9
| RewriteEngine on
RewriteBase /dfa
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond ^.* !^(backend/|images/|styles/|favicon\.ico|robots\.txt)
RewriteRule ^achterkant/(.*) backend/$1 [L,NC,QSA]
RewriteRule ^(.*) index.php?arguments=$1 [L,NC,QSA] |
Momenteel staat de site op een testservertje van mezelf in de map dfa/ vandaar regel 2.
Met regel 4 probeer ik te voorkomen dat als er een bestaand bestand opgevraagd wordt er aan rewriting gedaan wordt.
Regel 5 zou de genoemde mappen en bestanden moeten uitsluiten van rewriting.
Regel 7 moet "achterkant" naar "backend" rewriten en dat werkt ook. Probleem is dat de [L] flag in een per directory context niet werkt heb ik inmiddels begrepen uit de apache doc's. De rewriting begint dan weer gewoon opnieuw met de herschreven url...
Regel negen moet in de overige gevallen regelen dat alle aanvragen bij index.php terechtkomen. Dit werkt ook prima. Index.php krijgt als argument mee welke mappen er aangevraagd werden.
Als ik nu "achterkant/" aanvraag dan krijg ik index.php?arguments=backend/ te zien wat dus ondersteund dat de [L] flag in regel 7 niet lekker werkt. Wat ik dan echter niet begrijp is waarom regel 5 het rewriten niet stopt als de url voor de tweede keer langskomt in de vorm van "backend/"?
Ik kan nu alleen bij "backend/" als ik regel 9 outcomment...
Ik heb de apache doc's over mod_rewrite inmiddels flink doorgelezen maar wordt hier niet veel wijzer van. Afgaande op een aantal van die "beginner guides to mod_rewrite" die je kan vinden zou mijn voorgaande voorbeeld moeten werken volgens mij. Ik kom er alleen maar niet achter waarom dat niet het geval is.
Heeft iemand een idee hoe ik dit op kan lossen? Denk ik de verkeerde kant op of heb ik de verkeerde internetbronnen gelezen? Kan iemand mij op het goede spoor zetten?
Gemberthee: water met een smaakje.