Htaccess 规则不适用

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

问题在于规则的顺序:)

当我按如下方式更改顺序时,一切都正常:

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

相关内容