Traiter les barres obliques dans htaccess

Il y a pas mal de contenu disponible sur mod_rewrite mais je n’ai tout simplement pas réussi à faire ce qui suit.

En ce moment, j’ai le code suivant dans mon fichier htaccess:

RewriteEngine On Options -Indexes Options -Multiviews ErrorDocument 400 http://localhost/mywebsite/400.php ErrorDocument 403 http://localhost/mywebsite/403.php ErrorDocument 404 http://localhost/mywebsite/404.php ErrorDocument 500 http://localhost/mywebsite/500.php RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule (.*) $1.php [L] 

Ce qui fera avec succès des choses comme mywebsite / index work (au lieu de mywebsite / index.php). Cependant, dans certains cas, des visiteurs accéderont au site avec une barre oblique (mywebsite / index /) et ma réécriture ne fonctionnera plus. et je reçois une page d’erreur.

Alors, comment vais-je faire en sorte que toutes les pages avec une barre oblique, aucune barre oblique ou une extension (.php) fonctionneront sur mon site?

J’appendai que c’est sur localhost sur un serveur apache (XAMPP) au cas où cela affecterait le fonctionnement de mod_rewrite.

Remplacez votre code par ceci:

 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule (.*) $1.php [L] 

à

 RewriteCond %{DOCUMENT_ROOT}/$1.php -f RewriteRule ([^/]+)/?$ $1.php [L] 

Vous pouvez utiliser:

 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule (.+)/?$ $1.php [L] 

Parce que vous ne pouvez pas tester avant si le fichier (sans /) existe ou non.

Une règle de réécriture comme celle-ci devrait faire l’affaire:

 RewriteRule ^(.*)/?$ $1.php [L]