重写规则导致403禁止错误

时间:2013-05-02 20:00:45

标签: php apache .htaccess url-rewriting rewrite

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

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

我正在进行简单的重写,但由于目录访问权限,它显然无法正常工作。

守则:

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

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

问题:

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

现在,如果我将该目录重命名为其他内容,例如“downloads”,那么它就可以了。

- 编辑 -

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

2 个答案:

答案 0 :(得分:2)

  

/下载/?页=下载

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

DirectorySlash Off

答案 1 :(得分:0)

尝试

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

即使路径提供了/,规则也会匹配,因此无法访问目录 download

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

相关问题