Правило 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. Если я удалю первый набор правил, второе правило снова заработает. Итак, оба набора правил противоречат друг другу.

1
задан 5 November 2017 в 12:45
1 ответ

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

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

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]=
1
ответ дан 3 December 2019 в 23:23

Теги

Похожие вопросы