.htaccess伪静态配置遇404 Not Found问题求助
解决URL伪静态404问题的方案
修正后的.htaccess配置
RewriteEngine On # 将category/xxx格式的URL转发到category.php?cat=xxx RewriteRule ^category/([0-9a-zA-Z-]+)$ category.php?cat=$1 [NC,L,QSA]
原配置的问题点
你之前的RewriteCond条件逻辑错误:当访问/category/Accommodation时,服务器会检查category/Accommodation.php是否存在(规则里拼接了.php后缀),但实际不存在这个文件,导致规则不触发,直接返回404。这两个条件是用于处理/xxx转/xxx.php的场景,不适合当前伪静态需求,直接去掉即可。
额外优化(可选)
如果需要支持URL末尾带斜杠的情况(比如/category/Accommodation/),可以修改正则表达式允许末尾的斜杠:
RewriteRule ^category/([0-9a-zA-Z-]+)/?$ category.php?cat=$1 [NC,L,QSA]
关键参数说明
NC:不区分大小写匹配L:标记为最后一条规则,匹配后停止后续处理QSA:保留原URL中的额外查询参数(如果有的话)
内容的提问来源于stack exchange,提问作者Jordan Thompson
相关产品推荐
相关产品推荐

