我遇到了一个非常奇怪的问题:Google 告诉我我的站点地图中的某些链接无法访问,并出现 404 错误。但是,我尝试打开有问题的页面,一切正常。
该网站使用 codeigniter 构建,如下所示链接示例
现在,如果您尝试打开上面的链接,它将正常工作。但如果您尝试curl -I
:
curl -I http://widwebway.com/en/solutions HTTP/1.1 404 未找到
我制定了一些路由和重写规则,以从 URL 中排除控制器名称。换句话说,正确的链接是
curl -I http://widwebway.com/en/widwebway/view/solutions HTTP/1.1 301 已永久移动 日期:2012 年 2 月 29 日星期三 18:05:01 GMT 服务器:Apache/2.2.14(Ubuntu) 地址:http://widwebway.com/en/solutions 变化:接受编码 内容类型:text/html;字符集=iso-8859-1
Apache 错误日志显示
文件不存在:/var/www/myweb/en,引用者:http://widwebway.com/en/solutions
我的.htaccess
是:
ErrorDocument 404 /index.php
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^ar/widwebway/view/([a-z_]{1,50})[/]*$ /ar/$1 [L,R=301,NC]
RewriteRule ^en/widwebway/view/([a-z_]{1,50})[/]*$ /en/$1 [L,R=301,NC]
RewriteRule ^en/widwebway[/]*$ /en/home [L,R=301,NC]
RewriteRule ^ar/widwebway[/]*$ /ar/home [L,R=301,NC]
</IfModule>
知道为什么页面在那里但是在 curl 或 Google 机器人上却给出 404 错误吗?
答案1
我发现的是:浏览器实际上也得到了 404http://widwebway.com/en/solutions
当我去:http://widwebway.com/en/widwebway/view/solutions
我得到:
Request URL:http://widwebway.com/en/widwebway/view/solutions
Request Method:GET
Status Code:301 Moved Permanently
移动指向:http://widwebway.com/en/solutions
此文件/en/solutions
实际上并不存在,但通过重写规则,您可以告诉浏览器/en/widwebway/view/solutions
在看到时显示其内容/en/solutions
来自 Chrome 网络检查:
Request URL:http://widwebway.com/en/solutions
Request Method:GET
Status Code:404 Not Found
尝试使用 PT 标志。因为 /en/solutions 不是真实文件。这应该可以让你远离 404 错误示例来自Apache 文档
Alias /icons /usr/local/apache/icons
RewriteRule /pics/(.+)\.jpg /icons/$1.gif [PT]
答案2
看起来您缺少(或格式不正确) .htaccess 文件。
请在根目录创建一个.htaccess 文件并添加以下行 RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
以避免 404 错误。
我希望这个能帮上忙。
谢谢!