Помощь с редиректом

Статус
В этой теме нельзя размещать новые ответы.

Rabben

Старатель
Регистрация
26 Мар 2009
Сообщения
159
Реакции
10
Хочу сделать смену языка по поддомену. Смена языка осуществляется Для просмотра ссылки Войди или Зарегистрируйся x номер id языка). Добавил поддомен en.domain.com, в htaccess написал:

Код:
RewriteCond %{HTTP_HOST} ^en.domain.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.en.domain.com$
RewriteRule ^/?$ "http\:\/\/en\.domain\.com\/\?\&lang_id\=2" [L,R=301]

но происходит бесконечный редирект.
Помогите поправить код и по возможности, помогите из этого преобразовать невидимые редирект. Заранее спасибо.
 
Попробуйте так:
Код:
RewriteCond %{HTTP_HOST} ^en.domain.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.en.domain.com$
RewriteRule en.domain.com$ "http\:\/\/en\.domain\.com\/\?\&lang_id\=2" [L]
Под ваше правило ^/?$ просто попадали все запросы, и происходил бесконечный редирект.
 
Попробуйте так:
Код:
RewriteCond %{HTTP_HOST} ^en.domain.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.en.domain.com$
RewriteRule en.domain.com$ "http\:\/\/en\.domain\.com\/\?\&lang_id\=2" [L]
Под ваше правило ^/?$ просто попадали все запросы, и происходил бесконечный редирект.
Не редиректит в этом случае вообще.

Нашел вот что:

Код:
RewriteCond %{QUERY_STRING} !lang_id=
RewriteCond %{HTTP_HOST} ^domain.com$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1?&lang_id=1&%{QUERY_STRING} [R=301,L]

Остаётся 1 вопрос, как скрыть
Код:
?&lang_id=x
 
Код:
RewriteCond %{QUERY_STRING} !lang_id=
RewriteCond %{HTTP_HOST} ^domain.com$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1?&lang_id=1&%{QUERY_STRING} [L]
 
Проверял, тогда
Код:
?&lang_id=x
не убирается, а страница вообще не загружается.

Добавлено через 13 минут
Вот еще появился вопрос, как сделать исключение для определенных папок?
 
Проверял, тогда
Код:
?&lang_id=x
не убирается, а страница вообще не загружается.
Тоесть не грузится? Какой код возвращает сервер, 500 или 404?
Вот еще появился вопрос, как сделать исключение для определенных папок?
Через RewriteCond и проверку входит ли папка в REQUEST_URI/REQUEST_FILENAME.
Тоесть:
Код:
RewriteCond %{REQUEST_URI} .*path.*
RewriteRule .* http://google.com [R=301]
В этом случае, запрос с набором символов path будет редиректить.
 
404. Насчет второго я видно не так выразился. У меня на сервере есть запороленная папка, при входе в нее, добавляется ?&lang_id, из-за чего сразу редиректит на 401. Хочу сделать исключение для этой папки, чтоб её вообще редирект не затрагивал.
 
404. Насчет второго я видно не так выразился. У меня на сервере есть запороленная папка, при входе в нее, добавляется ?&lang_id, из-за чего сразу редиректит на 401. Хочу сделать исключение для этой папки, чтоб её вообще редирект не затрагивал.
Код:
RewriteCond %{REQUEST_URI} !^\/path$
Для всех других папок RewriteRule будут исполнятся.

Код:
RewriteCond %{QUERY_STRING} !lang_id=
RewriteCond %{HTTP_HOST} ^domain.com$
RewriteCond %{REQUEST_URI} !^\/path$
RewriteRule ^(.*)$ /$1?&lang_id=1 [L,QSA]
Попробуйте ещё такой .htaccess, %{QUERY_STRING} добавлять необязательно, есть флаг QSA, который его сохраняет. А внешнего неявного редиректа быть не может, и через то не работает правило если убрать R=301.
 
Спасибо, но вот почему то с RewriteEngine On не работает ... Тогда выбивает 500
Код:
Options +FollowSymLinks
Options +Indexes
RewriteEngine On

RewriteCond %{HTTP_HOST}  ^www\.(.+)$  [NC]
RewriteRule ^(.*)         http://%1/$1 [L,R=301]

RewriteCond %{HTTP_HOST} ^domain.com$
RewriteCond %{REQUEST_URI} !^\/admin$
RewriteRule ^(.*)$ /$1?&lang_id=1 [L,QSA]

RewriteCond %{HTTP_HOST} ^ru.domain.com$
RewriteCond %{REQUEST_URI} !^\/admin$
RewriteRule ^(.*)$ /$1?&lang_id=2 [L,QSA]

RewriteCond %{HTTP_HOST} ^by.domain.com$
RewriteCond %{REQUEST_URI} !^\/admin$
RewriteRule ^(.*)$ /$1?&lang_id=3 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^test$ test.php [L,QSA]
RewriteRule ^test/$ test.php [L,QSA]
RewriteRule ^test2$ test2.php [L,QSA]
RewriteRule ^test2/$ test2.php [L,QSA]
RewriteRule ^test3$ test3.php [L,QSA]
RewriteRule ^test3/$ test3.php [L,QSA]

RewriteRule ^(config|wp) http://www.microsoft.com [L,NC]
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху