1 votes

La règle Htaccess ne s'applique pas

J'ai les règles suivantes dans mon fichier htaccess pour supprimer l'extension .php et faire une redirection 301 vers l'URL sans extension :

# To remove .php extension
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\ (.*)\.php [NC]
RewriteRule ^ %1 [R=301,L]

# To check whether the file exists then set it back internally
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^.*$ $0.php [L]

Je souhaite appliquer les règles suivantes à un fichier PHP :

RewriteRule ^test/([0-9]+)$ test.php?id=$1 [L]

La règle ci-dessus conduit à une erreur de serveur interne 500. Si je supprime la première série de règles, la deuxième règle fonctionne à nouveau. Il y a donc un conflit entre les deux ensembles de règles.

1voto

Michael Samuel Points 175

Le problème est l'ordre des règles :)

Lorsque j'ai modifié l'ordre comme suit, tout a fonctionné :

RewriteRule ^test/([0-9]+)$ test.php?id=$1 [L]

# To remove .php extension
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\ (.*)\.php [NC]
RewriteRule ^ %1 [R=301,L]

# To check whether the file exists then set it back internally
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^.*$ $0.php [L]=

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X