使用mod_rewrite删除.php文件扩展名后,隐藏Google的“重复内容”

时间:2012-01-03 00:26:34

标签: mod-rewrite

对不起有点神秘的标题!我会试着解释一下。我的.htacess中有以下内容:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

因此,用户可以输入domain.com/foo/bar并提供domain.com/foo/bar.php。当然,输入domain.com/foo/bar.php也会加载相同的页面。

所以,在谷歌网站管理员工具(在HTML建议下),谷歌认为我已经复制了我的所有元描述和标题标签,因为它将bar和bar.php视为两个不同的文件。我担心谷歌会惩罚这个“重复内容”。我该怎么办?我相信我不是第一个遇到这个问题的人,但我很难找到相关的问题/答案。

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

使用[R] (the redirect flag)

RewriteRule ^(.*)$ $1.php [R,L]

这会强制进行外部重定向,因此尝试访问domain.com/foo/bar.php的用户将被重定向(通过HTTP 302 Found)到domain.com/foo/bar。您还需要使用[L](最后一条规则),以便立即重定向。

答案 1 :(得分:0)

我使用的答案(根据我的原始评论)from here解决了我的问题

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^.]+\.)+php?\ 
HTTP RewriteRule (.+)\.php?$ http://www.domain.com/$1 [R=301,L] 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(([^/]*/)*[^/.]+)$ /$1.php [L]