J’essaie de faire de la réécriture d’URL avec Apache2 et PHP, le problème est que j’ai créé un fichier .htaccess qui utilise rewrite_mod, le voici:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ webroot/index.php [QSA,L]
Le motif ^(.*)$
Doit correspondre à tout, mais il ne correspond pas aux requêtes vides, et je ne sais pas pourquoi.
Pour vous donner un exemple, ici le dossier /root
est le fichier .htaccess.
/root/anything
correspond; /root/some/thing
correspond aussi; /root/
ne correspond pas. Ici, la requête /root/
doit correspondre au motif ^(.*)$
Signifie “Correspond à tous les caractères de 0 fois à n’importe quelle quantité de fois”.
Est-ce que quelqu’un sait pourquoi il ne correspond pas aux demandes vides?
J’utilise actuellement LAMP sous Linux Mint.
Ayez vos règles comme ceci:
RewriteEngine On # handles landing page RewriteRule ^/?$ webroot/index.php [L] # handles rest RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . webroot/index.php [L]
mod_dir
module mod_dir
est exécuté avant mod_rewrite
et ajoute le gestionnaire DirectoryIndex
à la page de destination, à savoir /index.php
, bloquant ainsi l’exécution de votre règle à cause de la condition RewriteCond %{REQUEST_FILENAME} !-f
.