用.htaccess排除奇怪的页面

时间:2012-07-04 13:13:34

标签: php .htaccess url

我的网站上发生了一个奇怪的情况,谷歌认为某些php页面是其他php页面的子页面。例如,我在Google网站站长工具中收到的错误显示为:http://domain.com/page1.php/page5.php。 page1.php和page5.php都存在于网站上,但我无法弄清楚为什么谷歌认为应该将其连接到另一个。

浏览到这样的链接会加载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排除了include文件夹。并且包含文件夹在url中列出两次的事实是非常可疑的。

3 个答案:

答案 0 :(得分: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]

答案 1 :(得分:0)

我在.htaccess上根本不是专家,但也许你的重定向规则很混乱。 要进行重定向,只需在.htaccess中使用它:

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

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

答案 2 :(得分:0)

查找指向page1.php/的链接,而不是page1.php

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