除非输入文件名存在,否则.htaccess RewriteRule将获得403 Access Forbidden

时间:2014-04-03 09:20:11

标签: apache .htaccess mod-rewrite

我有一个非常简单的测试规则:

RewriteRule ^foo$ index.php

除非我创建文件:

> touch foo
> chmod o+r foo

当我尝试加载403 Forbidden时,服务器只返回/foo,即使存在index.php

我猜测在我的规则应用之前,有一些检查文件是否存在且可读。它似乎才开始成为一个问题。它可能是服务器中有人更改的标志吗?我无法访问配置,我可以在.htaccess中设置一些选项来忽略初始检查吗?


[修改]
好的,这是我的完整.htaccess文件,包含其他所有内容......

RewriteEngine On
RewriteBase /~myusername/
RewriteRule ^foo$ index.php

index.php只是一个空文件。权限已设置,我可以直接访问或在上面创建foo时访问它。


[修改]
经过进一步调查后,403 Forbidden仅在目录缺失读取权限时出现(drwx-----x失败,`drwx---w-x正常工作)。

2 个答案:

答案 0 :(得分:0)

我不知道为什么我需要对目录的读取权限,特别是考虑到我不想启用目录索引。我只能猜到某个脚本无法获取目录列表并暂停通常会成功重写URL的过程。

无论如何,作为解决方法

chmod o+r .

答案 1 :(得分:0)

您好,请试试这个,

RewriteEngine On
RewriteBase /~myusername/    
RewriteRule ^foo/$ index.php
请告诉我它是否有效。