Php 403 htaccess url路由错误

Php 403 htaccess url路由错误,php,.htaccess,url,http-status-code-403,Php,.htaccess,Url,Http Status Code 403,我是新的URL路由,所以这个问题可能是因为我做错了什么。我正在使用PHP,我需要有简单干净的URL,而不在浏览器中显示.PHP扩展名。因此,我使用了来自无脂肪框架(f3)的路由引擎,并在根文件夹中添加了一个.htaccess文件。我遵循了关于这一点的教程,这是我的htaccess文件中的内容 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{

我是新的URL路由,所以这个问题可能是因为我做错了什么。我正在使用PHP,我需要有简单干净的URL,而不在浏览器中显示.PHP扩展名。因此,我使用了来自无脂肪框架(f3)的路由引擎,并在根文件夹中添加了一个.htaccess文件。我遵循了关于这一点的教程,这是我的htaccess文件中的内容

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ framework.php [L,QSA]
所以,如果没有匹配的物理文件或目录,我需要将所有请求重定向到framework.php文件

这一切都很好,但我最近尝试了用谷歌建立索引,结果发现,当给出网站的url时,机器人会出现403错误

例如,www.abc.com在浏览器上运行良好,但在“作为谷歌工具获取”中出现403错误。这个错误也发生在谷歌页面速度洞察中

当您尝试通过www.abc.com/benefits/再次访问它时,它在浏览器上运行良好,但在“作为谷歌工具获取”中出现404错误

我的robots.txt文件包含以下内容

User-Agent: *
Disallow: 
Allow: /
如果不存在URL路由,则该错误是有意义的,因为我没有index.php文件,也没有名为benefits的物理子目录。但由于我有重写规则,我无法理解为什么它会给出403和404错误,为什么只针对机器人


谁能告诉我我做错了什么?感谢w3d指出的问题不仅仅是机器人的问题,htaccess文件没有任何问题

问题出在我的主控制器framework.php上


我将其重命名为index.php,现在问题已经解决。出于某种原因,即使url和文件夹结构是虚拟的,服务器仍在根文件夹中查找索引文件

您的.htaccess和robots.txt文件中似乎没有任何内容会导致robot和正常访客流量之间的差异?您是否已检查浏览器中的HTTP状态代码-是否看到
200 OK
状态?谷歌收到的是完整的403/404响应,还是你只是报告了状态码?它说它收到了来自服务器的403响应。当我使用HTTP头状态检查工具时,它说响应:403禁止,但是你在回复正文中得到了网站内容。在这种情况下,你的网站似乎出于某种原因(对于每个人)返回了错误的HTTP状态代码,尽管显然发送了正确的回复正文。在403/404的例子中,Google(和其他搜索引擎)只会关注所有重要的HTTP状态代码。“htaccess文件没有问题”-实际上,我认为您可能可以通过更改.htaccess文件来解决这个问题。您遇到的问题(至少403)与当您访问目录(包括根目录)时尝试自动加载索引文档的
mod_dir
DirectoryIndex
)是一致的,在这种情况下,该目录不存在。您的.htaccess文件专门排除目录请求,因此在指定目录时不会重写请求!因此,您可以简单地删除目录check-in.htaccess:
RewriteCond%{REQUEST\u FILENAME}-d
。但是,这并不能完全解释404以及您在浏览器中似乎得到有效响应(即正确的页面)的事实,除非您的框架也在处理403并设法以某种方式路由请求。。。?