You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Htaccess URL重写规则故障:不存在页面不返回404、跳转异常

问题2根因分析

你现有规则的正则写法存在匹配范围漏洞:(^azazaz|placeholdercateg) 里的起始符^只作用于第一个选项azazaz,没有作用于第二个选项placeholdercateg,导致只要URL任意位置出现placeholdercateg字符串就会命中重写规则,不管前面有没有其他路径。同时第二条规则里的^写在分组中间位置,属于语法逻辑错误,进一步扩大了匹配范围。

修复方案

修改后的完整.htaccess规则如下:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Https跳转

Options All -Indexes 
# 禁止服务器文件目录索引

# 第一层级分类匹配:强制分类名必须在URL根路径第一层级
RewriteRule ^(azazaz|placeholdercateg)/?([0-9]+)?/?$ /index.php?category=$1&page=$2 [NC,L]

# 第二层级动作匹配:强制动作名必须在分类名的下一层级
RewriteRule ^(azazaz|placeholdercateg)/(azaza|placeholderaction)/?([0-9]+)/?([0-9]+)?$ /index.php?category=$1&action=$2&id=$3&postid=$4 [NC,L]

# 兜底404规则:未命中以上规则且无对应实体文件/目录的请求直接返回404
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ - [R=404,L]
修改点说明
  • 将原分组内的^移到规则最开头,让两个分类选项都被限制在URL根路径第一层级,前面加任意路径的请求都不会命中该规则
  • 删除了第二条规则分组内错误的^符,调整为「分类+动作」的层级匹配逻辑,避免匹配位置混乱
  • 新增兜底404规则,所有无对应实体资源、且未命中前面重写规则的请求直接返回404,如果你有自定义404页面,可以将最后一条规则替换为RewriteRule ^ /你的自定义404页面路径 [R=404,L]

内容的提问来源于stack exchange,提问作者MisatoIsMyWife

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 05:33:01