0

В настоящее время я перенаправляюсь на дочерний сайт языка, ища параметр запроса. Это работает, но я хотел бы добавить поддержку для большего количества языков.htaccess Переадресация языка с параметром запроса

Текущий рабочий код:

RewriteCond %{REQUEST_URI} ^(.*)$ 
RewriteCond %{QUERY_STRING} ^ll=es$ [NC] 
RewriteCond %{REQUEST_URI} !^(/es/) 
RewriteRule (.*) https://domain.com/es/$1 [R=302,L,QSA] 

Я могу сделать это искать любого из других языков, но когда дело доходит до введения их обратно в правила я застреваю.

То, что я пытаюсь сделать что-то вроде этого:

RewriteCond %{REQUEST_URI} ^(.*)$ 
RewriteCond %{QUERY_STRING} ^ll=(es|fr|de)$ [NC] 
RewriteCond %{REQUEST_URI} !^(/$2/) 
RewriteRule (.*) https://domain.com/$2/$1 [R=302,L,QSA] 

ответ

0

Для дублирующих ссылок спичек в RewriteCond, вы используете %N и не $Nread more. Правила, таким образом, будут:

RewriteCond %{QUERY_STRING} (?:^|&)ll=(es|fr|de)\b [NC] 
RewriteCond %{REQUEST_URI} !^/%1/ 
RewriteRule ^(.*)$ https://domain.com/%1/$1 [R=302,L,QSA] 

(?:) не будет хранить матч за заднее реферирование.

+1

Это, кажется, дает петлю перенаправления со второй строки. Если я заменю '!^/% 1 /' на '! ^/Es /', он работает, но, очевидно, только для этого пути. – Justin

+0

@Justin Вы можете использовать '! ^/(?: es | fr | de) /' вместо этого во второй строке. Понятно, почему он не работает, как указано выше. – hjpotter92

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