mod_rewrite op VPS niet aan de praat te krijgen
Code (php)
1
2
3
4
5
6
2
3
4
5
6
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.* - [L]
RewriteRule ^(.*)$ index.php?route=$1
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.* - [L]
RewriteRule ^(.*)$ index.php?route=$1
De mod_rewrite is geinstalleerd en doet het, alleen komt geen enkel request nu aan. Ik heb het ook getest door de rewriterule het volledige domein te geven, dus:
Dan krijg ik de melding dat de server het request maar blijft doorsturen. De url wordt dan
http://www.domein.nl/index.php?route=/index.php
Met andere woorden, bestaande bestanden worden niet herkent. Nu heb ik ergens het vermoeden dat ik dus een RewriteBase moet opnemen, maar ik heb de hele DocumentRoot al geprobeerd, geen enkele werkt.
Iemand een idee over wat ik klaarblijkelijk ben vergeten te doen?
Gewijzigd op 12/07/2013 09:41:59 door Erwin H
Op mijn locahost werkt die ook, maar op mijn VPS ook niet. Het probleem zit hem blijkbaar dus echt in het feit dat mod_rewrite dus blijkbaar niet in de juiste directory kijkt. Hoe kan ik er dus achter komen welke base ik moet opgeven?
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.* - [L]
RewriteRule ^(.*)$ index.php?route=$1
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.* - [L]
RewriteRule ^(.*)$ index.php?route=$1
Andere optie:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
RewriteEngine On
RewriteBase /directory/
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.* - [L]
RewriteRule ^(.*)$ index.php?route=$1
RewriteBase /directory/
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.* - [L]
RewriteRule ^(.*)$ index.php?route=$1
p.s. Je hebt wel apache opnieuw opgestart nadat je mod_rewrite hebt aangezet he?
Nee, beide werken ook niet. Overigens werk ik dus wel met virtual hosts. In principe zou deze regel wat mij betreft direct voor alle virtual hosts mogen werken.
In eerste instantie heb ik dit via DirectAdmin ingesteld (binnen de eerste virtual host), nu probeer ik het direct in de httpd.conf te krijgen. Voorlopig lukt het in beide gevallen niet.
Bij mij is het de inhoud van mijn .htaccess, daardoor werkt het mijn inziens direct voor de huidige directory. Hierdoor worden deze instellingen wel elke pageload geladen maar je hoeft dan niet je proces opnieuw te starten na een wijziging. Wellicht voor het testen iets gemakkelijker.
Of heb je ook nog iets van: <IfModule mod_rewrite.c> </IfModule>
Het testen punt is wel waar. Ik vraag me alleen af of er verschillen zijn tussen wat er precies in je htaccess zou moeten staan en wat er in een httpd.conf zou moeten staan. Ik zal er nu in elk geval even naar kijken, misschien dat het met een tijdelijke htaccess wel lukt.
Toevoeging op 12/07/2013 11:00:26:
@Bart
Nee, ik heb geen conditie op mod_reqrite module. Die is actief, dat weet ik in elk geval wel. Of is er nog een andere reden waarom je die conditie op zou moeten nemen?
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ rewrite_test.php?route=$1 [L,QSA]
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ rewrite_test.php?route=$1 [L,QSA]
(index.php even vervangen door een test script waarin ik de $_GET parameters kan laten zien, dan zie ik wat ik wil zien)
Of je krijgt een server error, of hij word genegeerd.
Wat ik uit jou foutmelding haal is dat hij in een oneindige lus blijft hangen.
Gewijzigd op 12/07/2013 11:15:38 door Bart V B
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<Directory |DOCROOT|>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</Directory>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</Directory>
Zonder de Directory-tag kreeg ik een 400-error.
// Edit: Ingelogd op DirectAdmin, admin-level, onderaan "Custom HTTPD Configurations" > domein
Gewijzigd op 12/07/2013 11:27:56 door Johan M
Johan M op 12/07/2013 11:05:38:
Dit heb ik nu binnen de httpd.conf gezet (buiten DirectAdmin om dus) en dan werkt het. Bedankt daarvoor in elk geval!
Nu alleen nog om het te doen via DirectAdmin, zou ik dan zo'n directory block moeten plaatsen binnen de virtualhost sectie (via de 'httpd customization for domain.nl' optie)? -> beantwoord in je laatste post, ga ik even testen
@Bart
Zonder die conditie lukte het uiteindelijk dus wel, had alleen dat directory block nodig.
Toevoeging op 12/07/2013 11:29:43:
En in DirectAdmin werkt het dus ook inderdaad. Met de code zoals door Johan gegeven krijg ik het nu inderdaad ook aan de praat.
Heel erg bedankt!
Gewijzigd op 12/07/2013 11:22:46 door Erwin H
Graag gedaan, en mijn (gloednieuwe) VPS/DirectAdmin staat gelijk ook weer een beetje netter ingesteld :P