我已从网络上显示的应用程序网址中删除了index.php。但事后我有一个奇怪的问题。
我可以使用这样的浏览器访问网站... http://www.oakquotes.com/quotes/author/etc-etc
(注意缺少index.php)但是当我尝试使用爬虫访问相同的URL时,我得到禁止的403 http错误。< / p>
这是robots.txt文件:
User-agent: *
Allow:/quotes/topic
Allow:/quotes/author
Disallow:
Sitemap: http://www.oakquotes.com/Sitemap.xml
Sitemap: http://www.oakquotes.com/author_sitemap.xml
Sitemap: http://www.oakquotes.com/topic_sitemap.xml
我认为罪魁祸首是我编写的.htaccess规则,用于从URL中删除index.php。这是htaccess的代码:
<IfModule mod_rewrite.c>
# For security reasons, Option followsymlinks cannot be overridden.
# Options +FollowSymlinks
Options +SymLinksIfOwnerMatch
RewriteEngine On
RewriteBase /
RewriteCond $1 !^(index\.php|images|robots\.txt|Sitemap\.xml|topic_sitemap\.xml|author_sitemap\.xml|search\.html|style|js|system|application|quotes/authors|quotes/topic|application/controllers|application/views)
RewriteRule ^(.*)$ ./index.php/$1 [L]
</IfModule>
我错过了一步吗?请帮助我这方面。感谢。
答案 0 :(得分:0)
使用常规浏览器,您还会收到403错误。显示网站的原因如下:
基本身份验证将始终返回403错误。在大多数服务器上,ErrorDocument 403的全局规则定义为403.html。如果触发403错误,服务器将在内部查找错误文档403.html。此文档不存在,您的RewriteRule匹配,服务器返回呈现的index.php页面。这就是为什么你看到一个网页,即使它返回403错误。更复杂的是,由于403.html站点不存在,因此查找403.html站点会触发404(找不到页面)。这是全局定义的ErrorDocuments的问题。错误500将触发404错误,因为定义了500.html。
尝试在.htaccess中定义一个ErrorDocument处理,你会看到差异。
ErrorDocument 403 "Access denied"
如果触发错误403并且将停止呈现index.php,此规则将打印错误消息