Назад | Перейти на главную страницу

Правило Htaccess не применяется

У меня есть следующие правила в моем файле htaccess для удаления расширения .php и перенаправления 301 на URL-адрес без расширения:

# 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]

Я хочу применить следующие правила к файлу PHP:

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

Вышеупомянутое правило приводит к внутренней ошибке сервера 500. Если я удалю первый набор правил, второе правило снова заработает. Итак, существует некоторый конфликт с обоими наборами правил.

Проблема в порядке правил :)

Когда я изменил порядок, как показано ниже, все заработало:

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]=