0

我的网站上发生了一个奇怪的情况,谷歌认为某些 php 页面是其他 php 页面的子级。例如,我在谷歌网站管理员工具中出现错误,显示如下页面:http://domain.com/page1.php/page5.php。page1.php 和 page5.php 都存在于网站上,但我不明白为什么 google 认为应该将一个连接到另一个。

浏览到这样的链接将加载 page1.php,但不正确。我的目标是使用 .htaccess (或其他建议)来简单地重定向到第一页,如果后面有其他页面。我是否正确地考虑了这个问题,任何人都可以提供建议来帮助我解决这个问题吗?谢谢!

更新:我的 .htaccess 文件中唯一的几行是从以前的文件夹结构重定向到单个 php 文件,但这已经存在至少一年了。例如:

RedirectMatch 301 ^/widgets/?$ http://firesage.com/widgets.php

Update2:我刚刚在网站管理员工具中发现了这个“软 404”错误:http ://domain.com/page2.php/include/include/lookup.php?id=22 。首先,我通过 robots.txt 排除了包含文件夹。并且包含文件夹在 url 中列出两次的事实非常值得怀疑。

4

3 回答 3

2

一般来说,您可以使用.htaccess重定向 Google,但我宁愿建议您找到 Google 看到这些“错误”链接的原因(s. Jeroen 对您的问题的评论)。这是.htaccess开始的,直到你找到原因。

<IfModule mod_rewrite.c>

RewriteEngine On
RewriteBase /
Options +FollowSymLinks

# every page on its own
RewriteRule ^page1.php/(.*)$ /page1.php [R=301,L]
RewriteRule ^page2.php/(.*)$ /page2.php [R=301,L]
# or in general maybe the following to replace all of the above, if you think it'll fit
# RewriteRule ^([^/.]+)\.php/(.*)$ /$1.php [R=301,L]

</IfModule>

更新
如果您还需要传递任何可能的GET参数,只需添加QSA标志,使其变为[R=301,L,QSA].

于 2012-07-04T13:45:44.680 回答
0

寻找链接page1.php/而不是page1.php.

如果 google(或浏览器)跟随指向 的链接page1.php/,网络服务器将提供“正确”文件page1.php,但 google 会认为这page1.php是一个目录,因此解释相对链接(至page2.php),就像它们从“目录”中的索引文件page1.php开始一样.

于 2012-07-04T13:53:29.190 回答
0

我根本不是 .htaccess 方面的专家,但您的重定向规则可能很混乱。要进行重定向,只需在 .htaccess 中使用它:

RewriteEngine On
RewriteRule ^some regex$ http://yourdomain.com/page1.php [L]

你的 .htaccess 看起来像这样吗?你能用它更新你的问题吗?

于 2012-07-04T13:20:50.200 回答