0

我的问题是,RewriteRule当我访问物理目录时,仍然匹配,例如, Web 根目录中的普通目录在http://a-domain.com/foo/哪里。foo

.htaccess文件有:

Options -Indexes
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule .? index.php [L]

它在我的开发服务器上运行良好,但在实时 WHM/CPanel 服务器上运行良好。我有点失落。

4

3 回答 3

0

/foo/目录具有基本身份验证,因此在%{REQUEST_FILENAME}包含不存在的文件时失败/home/the_user/public_html/401.shtml。我不认为这是一个问题,因为基本身份验证有效,当我取消身份验证提示时,我得到了一个标准的 401 文件。通常当这些 ErrorDocument 文件丢失时,Apache 说此外,在尝试使用 ErrorDocument 处理请求时遇到了 404 类型的错误。

于 2012-02-23T07:37:20.543 回答
0

我在一个镜像我自己的共享服务的虚拟机上尝试了这个,它对我来说很好。目录.htaccess里还有别的吗?foo如果是这样,那么重写引擎将忽略您在 DOCROOT 中的引擎并改用它吗?

于 2012-02-09T10:59:34.323 回答
0

我已经在我的 cpanel 网站上对此进行了测试,你是对的,我发现问题出在哪里。当您尝试访问网站中没有默认文件(索引)的文件夹时,它会尝试访问负责 403 HTTP 代码的文件,并且由于该文件不存在,它会将 URL 重写为index.php.

您所要做的就是将其添加到.htaccess文件的上方:

ErrorDocument 403 /index.php?type=err&code=403
于 2012-02-09T10:57:13.713 回答