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

.htaccess Rewrite规则失效:原始URL可用,重写URL无法访问

解决多级URL重写问题

这个问题我熟,你的.htaccess规则里的正则表达式限制了只能捕获单段路径,没法处理带斜杠的多级URL(比如/auth/login)。咱们来调整一下规则就能解决:

修改后的.htaccess代码

<IfModule mod_rewrite.c>
    RewriteEngine On
    <IfModule mod_negotiation.c>
        Options -Indexes
    </IfModule>
    # 排除真实存在的目录和文件
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    # 捕获所有多级路径,传递给page参数
    RewriteRule ^(.+)$ index.php?page=$1 [QSA,L]
</IfModule>

关键修改点说明

  • 修正条件空格:原来的RewriteCond %{REQUEST_FILENAME}!-d缺少空格,改成RewriteCond %{REQUEST_FILENAME} !-d,确保mod_rewrite能正确识别规则条件。
  • 调整正则表达式:把原来的^([^/]+)/?$换成^(.+)$,[^/]+会排除斜杠,只能匹配单段路径;而.+可以匹配任意长度的字符(包括斜杠),完美捕获auth/login这类多级路径。
  • 保留必要标记:QSA会保留原URL中的查询参数(比如/auth/login?foo=bar会被重写成index.php?page=auth/login&foo=bar),L表示这是最后一条规则,避免后续规则干扰。

这样修改后,访问/auth/login就会被正确重写成/index.php?page=auth/login,和你手动访问的原始URL效果完全一致,index.php就能正常加载对应目录的文件了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 08:17:36