为什么我找到正确的链接时却出现页面未找到(404)的情况?

为什么我找到正确的链接时却出现页面未找到(404)的情况?

我遇到了一个非常奇怪的问题: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 错误。

我希望这个能帮上忙。

谢谢!

相关内容