J'ai du mal à configurer Apache avec mod_rewrite sur ma machine de développement. Mod_rewrite est actif et fonctionne bien pour certaines règles. Certaines règles ne fonctionnent pas comme prévu, comme celle-ci:
RewriteRule ^static/([^/]+)/([^/]+) /static.php?sISOCode=$1&sPage=$2
Dans static.php, je fais cela (pour le débogage):
<?php
print_r($_GET); print_r($_POST); print_r($_SERVER); die();
Quelles impressions (ont supprimé certains éléments du tableau $ _SERVER):
Array
(
)
Array
(
)
Array
(
[SERVER_SIGNATURE] => <address>Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.1 with Suhosin-Patch Server at alpha.prove.no Port 80</address>
[SERVER_SOFTWARE] => Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.1 with Suhosin-Patch
[SERVER_ADDR] => 127.0.0.1
[SERVER_PORT] => 80
[REMOTE_ADDR] => 127.0.0.1
[DOCUMENT_ROOT] => /home/veg/workspace/project
[SERVER_ADMIN] => webmaster@localhost
[SCRIPT_FILENAME] => /home/veg/workspace/project/static.php
[REMOTE_PORT] => 38954
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => GET
[QUERY_STRING] =>
[REQUEST_URI] => /static/no/startCar
[SCRIPT_NAME] => /static.php
[PATH_INFO] => /no/startCar
[PATH_TRANSLATED] => redirect:/index.php/startCar
[PHP_SELF] => /static.php/no/startCar
[argv] => Array
(
)
[argc] => 0
)
D'une manière ou d'une autre, les paramètres GET définis selon la règle ne passent pas. Le même fichier .htaccess est utilisé sur d'autres configurations et fonctionne bien. La configuration Apache pour ce domaine virtuel:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName project.example.com
DocumentRoot /home/veg/workspace/project
<Directory /home/veg/workspace/project>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
</VirtualHost>
Le journal d'accès et le journal des erreurs ne produisent rien lorsque cela se produit. Toutes les idées appréciées.
Un exemple de règle qui fonctionne, pour le même fichier:
RewriteRule ^faq/?$ /static.php?sISOCode=no&sPage=faq