2013-12-10 46 views
0

我们有一堆由谷歌用特殊撇号编码的URL(URL编码为'%E2%80%99')。我们更正了服务器上的网址,但Google仍然指向那里,我们不想在此处打断任何搜索引擎优化。任何想法为什么这不起作用?在.htaccess文件htaccess特殊字符RewriteRule不能正常工作

当前重写规则:与此URL

http://example.com/santa%E2%80%99s-comin-to-town/ 

# remove apostrophes from a string 
RewriteRule ^(.*)’(.*)$ /$1$2 [L,R=301] 
RewriteRule ^(.*)%E2%80%99(.*)$ /$1$2 [L,R=301] 

实例替换此URL

http://example.com/santas-comin-to-town/ 

回答

1

尝试使用这样的:

RewriteRule ^(.*)’(.*)$ /$1$2 [B,L,R=301] 
RewriteRule ^(.*)([^\w].+\d)(.*)$ /$1$3 [B,L,R=301] 

使用%字符可以对重写规则的不利影响:

(%..%..%..) or (\%..\%..\%..) 

应该也行,但要确保你所提供的[B]标志的统治的结束。

more info

+0

其实我的答案,你的答案,并@anubhava回答我的测试服务器上的所有工作。我正在尝试使用它的意大利面htacess文件在活动服务器上的一切。看起来我需要调试这个怪物。谢谢。 –

0

使用此规则在重写规则使用十六进制代码:

RewriteRule ^(.*)\xE2\x80\x99(.*)$ /$1$2 [L,R=301]