Ik heb een probleempje met mod-rewrite icm PHP. Ik gebruik de volgende rewriterules om een HTTP request naar een niet bestaand bestand door te sturen naar een standaard script. In dat script verwerk ik dan zelf het opgegeven URL om te bepalen welke content er getoond moet worden. Dat werkt opzich prima.
Op mijn windows werkstation (met een locale Apache / PHP installatie) gebeuren er echter rare dingen. Het gedrag kan worden vastgesteld aan de hand van de volgende testcase, deze staan in de submap /test/ op de server:
De foutmelding treedt op wanneer na een request met pathinfo een request wordt gedaan zonder pathinfo (dus naar / of /index). Ik krijg de fout op Apache 2.0.55, PHP 4.4.1 op windows XP. Mijn Debian doos thuis met de recenste Apache 1.3 en PHP 4 vertoont het probleem niet.
Mijn vraag is nu of iemand weet waarom / hoe dit kan? Zie ik iets over het hoofd dat het logisch te verklaren - en dus op te lossen - maakt. Of gaat het hier om een bugje.
code:
1
2
3
4
5
6
7
| RewriteEngine on
RewriteBase /test/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index/$1 |
Op mijn windows werkstation (met een locale Apache / PHP installatie) gebeuren er echter rare dingen. Het gedrag kan worden vastgesteld aan de hand van de volgende testcase, deze staan in de submap /test/ op de server:
PHP:
1
2
3
| ## index.php define ('DEFINE_TEST', TRUE); require_once 'require_once_test.php'; |
PHP:
Surf ik nu naar /test/ is er niets aan de hand. surf ik naar /test/foo/ ook nog niet. Surf ik vervolgens terug naat /test/ dan krijg ik de volgende foutmeldingen van PHP:1
2
| ## require_once_test.php define ('REQUIRE_ONCE_TEST', TRUE); |
code:
Op de een of andere manier blijven de constanten dus gedefinieerd. De lijst met al geinclude bestanden wordt echter wel gereset, (hence de require_once_test constante).1
2
| Notice: Constant DEFINE_TEST already defined in D:\Webroot\test\index.php on line 2 Notice: Constant REQUIRE_ONCE_TEST already defined in D:\Webroot\test\test.php on line 2 |
De foutmelding treedt op wanneer na een request met pathinfo een request wordt gedaan zonder pathinfo (dus naar / of /index). Ik krijg de fout op Apache 2.0.55, PHP 4.4.1 op windows XP. Mijn Debian doos thuis met de recenste Apache 1.3 en PHP 4 vertoont het probleem niet.
Mijn vraag is nu of iemand weet waarom / hoe dit kan? Zie ik iets over het hoofd dat het logisch te verklaren - en dus op te lossen - maakt. Of gaat het hier om een bugje.
Regeren is vooruitschuiven