2012-03-29 17 views
0

Я обновил свой сайт. Раньше были такие ссылки: http://example.com/bla-bla-bla?language=de. После обновления, эти ссылки должны быть 301-перенаправлены http://de.example.com/bla-bla-blaApache: htaccess redirect

Я попытался это, но он не работает:

RewriteRule ^(.*)language=(fr|de|it|es|pt) http://$2.example.com/$1 [R=301,NC]

Спасибо за помощь.

ответ

0

Получить параметры невозможно с помощью команды RewriteRule. Они содержатся в переменной% {QUERY_STRING}. Вы можете извлечь определенное значение с помощью RewriteCond. Затем с префиксом «%» Пример

RewriteCond %{QUERY_STRING} ^language=(fr|de|it|es|pt)$ [NC] 
RewriteRule ^(.*) http://%1.example.com/$1 [R=301,NC,L] 

Мы добавили флаг L, чтобы остановить переписать правила.

Рекомендуется установить значение по умолчанию, если кто-то получит доступ к старой странице без параметра языка.

RewriteCond %{QUERY_STRING} ^$ [NC] 
RewriteRule ^(.*) http://fr.example.com/$1 [R=301,NC,L] 

Я фр, потому что я французский =)

С уважением

+0

Он работает только тогда, когда я печатаю http://example.com/language=fr. Это абсолютно не работает, когда я печатаю что-то вроде этого http://example.com/test.php?language=fr (я хочу, чтобы он перенаправлялся на http://fr.example.com/test.php) – user1267570

+0

Как ваш правила перезаписи выглядят, чтобы дать вам это? Как переписывается example.com/test.php?language=fr? – grifos

+0

Это была моя ошибка. Это действительно сработало. У меня была перенаправка на несуществующие URL-адреса на точку входа в сайт, и она выполнялась до вашего. – user1267570