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

.htaccess配置URL重写遇404错误 请求URL未找到问题排查

问题排查与修复方案

你的第二条RewriteRule无法工作的核心原因是正则表达式开头多了斜杠/。在.htaccess文件中,RewriteRule匹配的请求路径是去掉了开头斜杠的(比如请求example.com/specialities/23/ent,实际匹配的是specialities/23/ent,而非/specialities/23/ent),带开头斜杠的正则永远无法匹配到请求路径,直接导致404错误。

另外,RewriteCond %{REQUEST_FILENAME} !-f仅对紧随其后的RewriteRule生效,如果需要统一排除真实存在的静态文件(比如图片、CSS等)被错误重写,可以把这个条件移到所有规则之前;如果不需要对第一条doctor规则生效,也可以单独保留在specialities规则前。

修改后的.htaccess代码

方案一:统一排除真实文件(推荐)

RewriteEngine on

# 排除真实存在的文件,避免静态资源被错误重写
RewriteCond %{REQUEST_FILENAME} !-f

# Doctor规则
RewriteRule ^doctor/([0-9]+)/([^/.]+)$ doctor_details.php?id=$1&name=$2 [NC,L] 

# Specialities规则(去掉开头的斜杠)
RewriteRule ^specialities/([0-9]+)/([^/.]+)$ speciality_details.php?id=$1&name=$2 [NC,L] 

方案二:仅给specialities规则保留文件排除条件

RewriteEngine on

# Doctor规则(原逻辑不变)
RewriteRule ^doctor/([0-9]+)/([^/.]+)$ doctor_details.php?id=$1&name=$2 [NC,L] 

# Specialities规则(修正斜杠问题)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^specialities/([0-9]+)/([^/.]+)$ speciality_details.php?id=$1&name=$2 [NC,L] 

额外说明

  • [NC]标志表示忽略大小写匹配,[L]标志表示这是最后一条匹配规则,避免后续规则干扰当前匹配结果。
  • 确保服务器已启用mod_rewrite模块,且Apache配置中对应目录设置了AllowOverride All,允许.htaccess文件生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 20:45:22