Как перенаправить старые уродливые URL-адреса (все еще в кеш-памяти Google) на новые рабочие Beautific? - PullRequest
0 голосов
/ 11 марта 2011

Учитывая: сначала я украсил свои URL , теперь все красивые URL позволяют серверу извлекать уродливые страницы под водой. Большинство людей делают это, и с некоторым Stackoverflow все работает нормально. Благодаря этому великолепному интернет-сообществу.

Маленькая проблема: Но, Google все еще кэшировал старые URL , уродливые, и я хотел бы затем перенаправить один раз и все через 301 видимый постоянный редирект на хорошие.

Sothat все нижеприведенные случаи

/xx/yyyyyyy?ln=xx
/yyyyyyy.php?ln=xx
/xx/yyyyyyy.php?ln=xx

Перенаправить навсегда (и после) к:

/xx/yyyyyy

А когда не дано языка:

/yyyyyyy
/yyyyyyy.php

Перенаправить их обоих на:

/en/yyyyyyy

(Условные обозначения: yyyyyyy.php = имя веб-сайта, например index.php и /xx/ = код страны из 2 символов (необязательно), а также при указании NO xx.

Какое золотое правило переписывания делает эту мечту реальностью? Ваш вклад высоко ценится мной. Я рассматриваю все предложения как возможные ответы.

1 Ответ

1 голос
/ 12 марта 2011

Попробуйте эти правила:

RewriteCond %{QUERY_STRING} ^(([^&]*&)*)(ln=[a-z]{2})&+(.*)
RewriteCond %3&%1%4 ^ln=([a-z]{2})&+(.*)
RewriteRule ^/([a-z]{2}/)?(.+)(\.php)?$ /%1/$1?%2 [L,R=301]

RewriteCond $0 !^/[a-z]{2}(/|$)
RewriteRule ^/(.+)(\.php)?$ /en/$1 [L,R=301]

Но это может быть намного проще, если вы сделаете это с PHP, так как mod_rewrite весьма ограничен в своей выразительности.

...