sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #61493
Hard-core problemer med Apache: mod_rewrite, FastCGI, DirectoryIndex
Hejsa!
Jeg har netop ændret min Apache-konfiguration, så PHP nu kører via FastCGI
(tidligere kørte PHP bare som alm. CGI). Jeg har hele tiden kørt med
mod_rewrite på serveren, hvilket har fungeret fint indtil jeg installerede
FastCGI...
Jeg er således løbet ind i et problem med kombinationen af mod_rewrite,
FastCGI, og DirectoryIndex-direktiverne i httpd.conf:
Jeg har følgende Virtual Host opsat:
-----------------------------------
<VirtualHost 10.0.0.1>
User foo-user
Group foo-user
ServerName servername.dk
ServerPath /www/servername.dk/html/
DocumentRoot /www/servername.dk/html/
RewriteEngine on
RewriteRule ^/test1/ - [L]
RewriteRule ^/_((images|style|script)/.*)$ /$1 [L]
RewriteRule ^/_(images|style|script)$ /$1 [L]
RewriteRule ^(.*)$ /index.php?my_url=$1&%{QUERY_STRING}
ErrorLog /www/servername.dk/logs/error_log
CustomLog /www/servername.dk/logs/access_log combined
FastCgiServer /www/servername.dk/html/php-fastcgi-wrapper
AddHandler php-fastcgi .php
<Location /php-fastcgi-wrapper>
SetHandler fastcgi-script
</Location>
Action php-fastcgi /php-fastcgi-wrapper
</VirtualHost>
(Scriptet /www/servername.dk/html/php-fastcgi-wrapper er bare et
shell-script, der kalder PHP.)
-----------------------------------
I min httpd.conf har jeg følgende:
...
DirectoryIndex index.php
...
-----------------------------------
Beder jeg om URL'en "http://servername.dk/blah/foo/foobar", så bliver jeg
korrekt sendt videre til "http://servername.dk/index.php" med
"/blah/foo/foobar" i variablen $HTTP_GET_VARS["my_url"]. (Jvf. den sidste
RewriteRule.)
Beder jeg om URL'en "http://servername.dk/test1/" eller URL'en
"http://servername.dk/test1/index.php", og filen
"/www/servername.dk/html/test1/index.php" findes, så bliver jeg i begge
tilfælde sendt videre til "http://servername.dk/index.php" med
"/php-fastcgi-wrapper/test1/index.php" i variablen $HTTP_GET_VARS["my_url"].
(AARGH!)
Beder jeg om URL'en http://servername.dk/test1/, og filen
"/www/servername.dk/html/test1/index.php" IKKE findes, så får jeg bare en
fejl 404, som jeg også burde.
-------------------------------------
Summa summarum: Hvis jeg kalder en URL, der peger på et PHP-script, og det
matcher med min RewriteRule, eller jeg kalder en URL, som DirectoryIndex
finder ud af er et PHP-script (index.php), så går det helt galt: Min
"Action" for PHP-scripts bliver på en eller anden måde blandet sammen med
mod_rewrite.....
Jeg skulle mene, at dette er rimeligt hard-core, og ville blive glad, hvis
der var nogle der kunne hjælpe mig med dette.
På forhånd tak,
Morten Egelund Rasmussen
______________________________________________
Everyone always asks me if I know Tyler Durden