【问题标题】:Rewrite rule leads to 403 forbbiden error重写规则导致 403 禁止错误
【发布时间】:2013-05-02 20:00:45
【问题描述】:

我昨天在这里问了一个问题,用户“faa”试图帮助我,但不幸的是我们无法解决问题。

原来的问题在这里:Rewriting url with htaccess when a directory exists

我正在做一个简单的重写,但由于目录访问权限,它(显然)不起作用。

守则:

*动态页面:url.com/index.php?page=download

重写规则:^download$ /index.php?page=download

问题:

存在名为“download”的目录。 当重写规则尝试将动态页面*重写为“下载”路径时,它会返回 403 FORBBIDEN 错误,并且页面会被重写为“download/?page=download”。

现在,如果我将该目录重命名为其他名称,例如“下载”,那么它可以工作。

-- 编辑--

默认情况下,我的服务器使用“403 禁止错误”保护每个目录。我相信这是它不起作用的原因,但我不确定。 真的是冲突吗? 发生了什么?

【问题讨论】:

    标签: php apache .htaccess url-rewriting rewrite


    【解决方案1】:

    /download/?page=download

    发生这种情况的原因是,mod_dir 将所有对缺少尾部斜杠的目录的请求重定向到包含尾部斜杠。这干扰了您的重写规则。由于您的服务器已自动设置为拒绝列出目录,因此继续关闭目录斜线可能是安全的:

    DirectorySlash Off
    

    【讨论】:

    • 这简直太棒了!你是由神经元构成的吗?简直太完美了!达安斯瓦!太感谢了。您能否提供有关此问题的更多详细信息?它背后的想法对我来说仍然很抽象
    • @Darkeden 没什么好说的,这只是 2 个模块对请求做一些事情,在 URL 文件映射管道结束时,您已经重写了 URI (mod_rewrite),请求是标记为重定向(mod_dir),所以你最终会出现一些奇怪的行为。
    【解决方案2】:

    试试

    RewriteRule ^download[/]?$ index.php?page=download
    

    即使路径带有 /,规则也匹配,因此无法访问目录 download。

    确保即使在重定向之后 RewriteRule 也会执行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-24
      • 2018-07-23
      • 1970-01-01
      • 2022-10-16
      • 2021-11-26
      • 2014-04-19
      • 1970-01-01
      相关资源
      最近更新 更多