Apache – RewriteRule “$ (. *) ^” Ne fonctionne pas avec les requêtes vides

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.

  • Demande /root/anything correspond;
  • Demande /root/some/thing correspond aussi;
  • Demande /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 .