2013-11-12 2 views
1

После переноса сайта Wordpress на новую сборку мне нужно захватить множество старых URL-адресов и перенаправить их на один и тот же контент на новом сайте. Проблема в том, что на старом сайте много URL-адресов с символами, закодированными в ascii, и Wordpress лишил их на текущем сайте. Например:Регулярное выражение для захвата URL-адресов с символами, закодированными ascii

/blog/uncategorized/germany%E2%80%99s-ageing-population-working-longer-working-better.html 

будет перенаправлять:

/blog/germanys-ageing-population-working-longer-working-better/ 

Может кто-нибудь обеспечить регулярное выражение, которое устранило бы ASCii закодированные символы?

+0

Что вы используете для замены строки? – woemler

+0

Я использую плагин, но в основном это перенаправление .htaccess 301 – hamishtaplin

ответ

1

Вы должны соответствовать запросу, потому что с правилами переадресации и перезаписи URI декодировал до того, как шаблоны будут применены. Это означает, что вы будете сопоставлять такие вещи, как â, а не закодированные строки. Поэтому вам нужно что-то вроде:

RewriteEngine On 
RewriteCond %{THE_REQUEST} \ /blog/([^\?\ ]*)\%[A-Z0-9]{2}([^\?\ ]*) 
RewriteRule^/blog/%1%2 [L,R=301,NE] 
+0

Это прекрасно работает, спасибо! – hamishtaplin

3

Для сравнения закодированных символов, можно использовать следующий шаблон: регулярок

%[A-Z0-9]{2} 

Как выполнить замену будет зависеть от языка/инструмент, который вы используете.

+0

Как бы это сделать в .htaccess? – hamishtaplin

+0

У меня нет ответа на этот вопрос, но попробуйте посмотреть другие вопросы на сайте, например: http://stackoverflow.com/questions/18316152/replace-portion-of-url-in-htaccess-and- save-query-string – woemler

Смежные вопросы