URL: https://linuxfr.org/forums/linux-general/posts/apache-mod_rewrite-et-directory Title: Apache, mod_rewrite et Directory Authors: Spack Date: 2012年06月04日T17:46:12+02:00 Tags: debian Score: 0 Salut, Je tente de ré-écrire toute URL ne désignant pas un fichier comme un argument au fichier index.php` et cela, sans utiliser de fichier `.htaccess`. Une requête vers http://www.example.com/test doit devenir http://www.example.com/index.php?q=/test. J'utilise Debian Squeeze (6.0) et Apache 2.2.16. Voici mon fichier de configuration : ```apache DocumentRoot /var/www/example ServerName www.example.com ServerAlias example.com ErrorLog /var/log/apache2/error/example.log CustomLog /var/log/apache2/access/example.log combined RewriteEngine On RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC] RewriteRule ^/(.*) http://www.example.com/1ドル [L,R=301] AllowOverride None Options -Indexes +FollowSymLinks DirectoryIndex index.php RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !=/favicon.ico RewriteRule ^/(.*)$ index.php?q=1ドル [L,QSA] ``` si le premier appel à `mod_rewrite` dans _VirtualHost_ change bien example.com en www.example.com, le second appel dans _Directory_ ne semble pas fonctionner et une requête vers http://www.example.com/test résulte en une erreur 404. Voici ce que l'on peut voir dans les logs : ```text (2) init rewrite engine with requested uri /test (3) applying pattern '^/(.*)' to uri '/test' (4) RewriteCond: input='www.example.com' pattern='!^www\.example\.com $' [NC] => not-matched (1) pass through /test (3) [perdir /var/www/example/] strip per-dir prefix: /var/www/example/test -> test (3) [perdir /var/www/example/] applying pattern '^/(.*)$' to uri 'test' (1) [perdir /var/www/example/] pass through /var/www/test/test File does not exist: /var/www/test/test ``` Qu'ai-je manqué ?

AltStyle によって変換されたページ (->オリジナル) /