我有一个非常简单的测试规则:
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
正常工作)。
答案 0 :(得分:0)
我不知道为什么我需要对目录的读取权限,特别是考虑到我不想启用目录索引。我只能猜到某个脚本无法获取目录列表并暂停通常会成功重写URL的过程。
无论如何,作为解决方法:
chmod o+r .
答案 1 :(得分:0)
您好,请试试这个,
RewriteEngine On
RewriteBase /~myusername/
RewriteRule ^foo/$ index.php
请告诉我它是否有效。