0

我有一个网站曾经使用php“标准”地址,例如index.php?id=10。 现在我已经配置mod_rewrite有更好的网址,所以我加了规则在Apache中添加重写规则后删除Google链接

RewriteRule ^/([0-9]+)/?$ /index.php?id=$1 [QSA] 

因此,每当有人将亮相/10他或她将被重定向到index.php?id=10

由于重定向与旧地址完全相同,因此Google会继续以旧的php风格的网址为结果,并且当您在Google中执行搜索时,某些结果现在会重复。

我订阅了谷歌网站管理员工具并为该网站添加了一个网站地图,只留下rewrite地址,但是在两个多月之后,旧的网址仍然出现。有没有办法将它们从Google中删除?

非常感谢!

回答

0

将传入的旧式URL重定向到返回404的网站,Google将删除它们。只要您保持内部重写(并且不要再次重写resulkts,或者通过其他人使用L标志之后的规则),传入的新链接将不会受到影响。

这看起来是这样的(未经测试,但你至少应该得到的想法):

RewriteRule ^/([0-9]+)/?$ /index.php?id=$1 [QSA,L] 
RewriteRule ^/index.php?id=([0-9])$ - [R=404,L] 

发送永久重定向状态代码301(加上位置头)重定向到新的网址也应该工作,在这种情况下谷歌不会remnove条目,但更正的URL。

RewriteRule ^/([0-9]+)/?$ /index.php?id=$1 [QSA,L] 
RewriteRule ^/index.php?id=([0-9])$ /$1 [R=301,L] 

你应该,但是,保留旧样式的URL功能,无论如何,因为Cool URIs don't change

+0

我该如何重定向它们? Apache正在将它们转变为“php”风格。我可以直接使用另一个重写规则吗?确切地说,是 –

+0

。重定向在内部完成(除非您使用R标志或FQDN另行指定),因此浏览器从不会看到您重写请求的URL。因此,它永远不会请求旧的stlye URL,除非某个用户(或bot)直接请求它们。因此,只重定向旧网址是安全的。我会编辑一些建议给我的答案,给我一点。 –