htaccess重定向异常:访问/news/categories跳404需加载cats.php
解决方法
在现有Rewrite规则中添加一条**精确匹配/news/categories**的重写规则,并将其放在带参数的分类规则之前,确保优先匹配。
修改后的完整配置如下:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)/$ /$1 [R=301,L] RewriteCond %{THE_REQUEST} \s/category\.php\?catid=(\S+)\s [NC] RewriteRule ^ /news/categories/%1? [R=301,L] RewriteCond %{THE_REQUEST} \s/article\.php\?title=(\S+)\s [NC] RewriteRule ^ /news/%1? [R=301,L] RewriteCond %{REQUEST_URI} !/(exception\.php|admin) [NC] RewriteCond %{THE_REQUEST} \s/([^.]*)\.php/?\s [NC] RewriteRule ^ /%1? [R=301,L] # 新增规则:精确匹配/news/categories,内部加载根目录cats.php RewriteRule ^news/categories$ cats.php [NC,L] RewriteRule ^news/categories/([^/]*)$ category.php?catid=$1 [NC,QSA,L] # 修正原配置拼写错误:artice.php → article.php RewriteRule ^news/([^/]*)$ article.php?title=$1 [NC,QSA,L] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^(.+?)/?$ $1.php [L]
关键说明:
- 新增的
RewriteRule ^news/categories$ cats.php [NC,L]实现了精确匹配请求路径/news/categories,内部重写到根目录的cats.php文件,NC忽略大小写,L表示匹配后终止后续规则处理。 - 必须将这条规则放在
^news/categories/([^/]*)$规则之前,避免被带参数的分类规则干扰。 - 修正了原配置中的拼写错误:
artice.php改为article.php,避免文章页面出现404问题。
内容的提问来源于stack exchange,提问作者Péter Gergő
相关产品推荐
相关产品推荐

