Ошибка Htaccess языка Redirect 310 - PullRequest
0 голосов
/ 15 ноября 2011

У меня есть сайт на двух языках

Swedish side  www.site.com
English side  www.site.com/?lang=en

Я использую

RewriteEngine on
RewriteCond %{HTTP:Accept-Language} (aa|ab|af|am|ar|as|ay|az|ba|be|bg|bh|bi|bn|bo|br|ca|co|cs|cy|da|de|dz|el|en|eo|es|et|eu|fa|fi|fj|fo|fr|fy|ga|gd|gl|gn|gu|ha|hi|hr|hu|hy|ia|ie|ik|in|is|it|iw|ja|ji|jw|ka|kk|kl|km|kn|ko|ks|ku|ky|la|ln|lo|lt|lv|mg|mi|mk|ml|mn|mo|mr|ms|mt|my|na|ne|nl|no|oc|om|or|pa|pl|ps|pt|qu|rm|rn|ro|ru|rw|sa|sd|sg|sh|si|sk|sl|sm|sn|so|sq|sr|ss|st|su|sw|ta|te|tg|th|ti|tk|tl|tn|to|tr|ts|tt|tw|uk|ur|uz|vi|vo|wo|xh|yo|zh|zu) [NC]
RewriteRule .* www.site.com/?lang=en [L]

Чтобы получить все языки, кроме шведского, до www.site.com/?lang=en, но я в конечном итоге в цикле 310,чего не хватает?

1 Ответ

1 голос
/ 15 ноября 2011

Вам нужно добавить проверку для lang, чтобы убедиться, что вы не зацикливаетесь.

RewriteEngine on
RewriteCond %{QUERY_STRING} !(&|^)lang=
RewriteCond %{HTTP:Accept-Language} (aa|ab|af|am|ar|as|ay|az|ba|be|bg|bh|bi|bn|bo|br|ca|co|cs|cy|da|de|dz|el|en|eo|es|et|eu|fa|fi|fj|fo|fr|fy|ga|gd|gl|gn|gu|ha|hi|hr|hu|hy|ia|ie|ik|in|is|it|iw|ja|ji|jw|ka|kk|kl|km|kn|ko|ks|ku|ky|la|ln|lo|lt|lv|mg|mi|mk|ml|mn|mo|mr|ms|mt|my|na|ne|nl|no|oc|om|or|pa|pl|ps|pt|qu|rm|rn|ro|ru|rw|sa|sd|sg|sh|si|sk|sl|sm|sn|so|sq|sr|ss|st|su|sw|ta|te|tg|th|ti|tk|tl|tn|to|tr|ts|tt|tw|uk|ur|uz|vi|vo|wo|xh|yo|zh|zu) [NC]
RewriteRule .* http://www.site.com/?lang=%1 [L]

Обратите внимание, что %1 является обратной ссылкой на двухбуквенный код языка, который соответствовал предыдущему RewriteCond. Еще одно замечание, касающееся правила, заключается в том, что запрос типа /something/file.html будет перенаправлен на http://www.site.com/?lang=(2 letter language code). По сути, первоначальный путь потерян. Если вы хотите сохранить его, вам нужно сопоставить и использовать обратную ссылку:

RewriteRule ^(.*)$ http://www.site.com/$1?lang=%1 [L]

Если вы хотите, чтобы предыдущие строки запроса также передавались, например, /something/file.php?a=b, вам нужно добавить QSA в скобках, чтобы он был перенаправлен на http://www.site.com/somthing/file.php?lang=(2 letter language code)&a=b.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...