2013-12-10 3 views
0

У нас есть куча URL-адресов, которые были проиндексированы Google со специальными апострофами (URL-адрес, кодированный как «% E2% 80% 99»). Мы исправили URL-адреса на сервере, но Google все еще указывает туда, и мы не хотели прерывать любые SEO-моджо здесь. Любые мысли, почему это не сработает?htaccess специальный символ RewriteRule еще не работает

Текущее правило перезаписи в файле .htaccess:

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

Пример заменить этот URL:

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

с этим 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] 
Смежные вопросы