Mod rewrite 隐藏“;“重复内容”;在使用mod_rewrite删除.php文件扩展名后从Google获得

Mod rewrite 隐藏“;“重复内容”;在使用mod_rewrite删除.php文件扩展名后从Google获得,mod-rewrite,Mod Rewrite,对不起,这个有点晦涩的标题!我会尽力解释的。我的.htace中有以下内容: 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也会加载相同的页面 因此,在谷歌网站管理员工具(根据HT

对不起,这个有点晦涩的标题!我会尽力解释的。我的.htace中有以下内容:

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视为两个不同的文件。我担心谷歌会惩罚这种“重复内容”。我该怎么办?我相信我不是第一个有这个问题的人,但我正在努力寻找相关的问题/答案

感谢您的帮助

使用

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

我使用的答案(根据我最初的评论)解决了我的问题

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]

嗯。我尝试了这个,所有对foo/bar的请求都被重定向到foo/bar.php(这与我想要的正好相反!)我发现了这个()并且下面的代码似乎工作得很好:
RewriteCond%{the_REQUEST}^[A-Z]{3,9}\/([^.]+\]+php?\HTTP RewriteRule(+.+)\.php$http://www.domain.com/$1[R=301,L]重写cond%{REQUEST_FILENAME}-d RewriteCond%{REQUEST_FILENAME}.php-f RewriteRule^([^/]*/)*[^/]+)$/$1.php[L]
这很好,但如果谷歌已经为我的.php文件编制了索引,会怎么样?我应该用robots.txt阻止它们吗?
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]