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
la source
La solution était de changer la configuration d'Apache, comme ceci:
Je ne sais pas pourquoi cela fonctionne, cependant
la source
Désactivez -MultiViews dans votre fichier htaccess quelque chose comme ci-dessous
cela résoudra le problème
la source