php - 重写规则导致403禁止错误

标签 php apache .htaccess url-rewriting

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

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

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

代码:

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

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

问题:

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

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

--编辑--

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

最佳答案

/download/?page=download

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

DirectorySlash Off

关于php - 重写规则导致403禁止错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16346691/

相关文章:

PHP:从 1 循环到 5,从 3 开始

php - 按每年唯一的月份分组,而不仅仅是月份

php - 更改sublime text 3中特定单词的颜色

php - 如何在 PHP CGI 上检查 mod_rewrite

java - 如何在 Apache CXF 中抛出 403 错误 - Java

.htaccess - 301重定向vs重写

php - 从以前的网站中删除 301 重定向

javascript - 捕获 php 变量中的 div id 值

mysql - 在 Debian VPS 上安装 Apache & 未满足的依赖项错误

regex - 如何重定向完整域 URL 并使用 htaccess 删除子文件夹