Показать полную графическую версию : Ошибка перенаправления в субдоменах
RewriteCond %{HTTP_HOST} ^www\.(ru|en)\.site\.spb\.ru [NC]
RewriteRule ^(.*)$ http://%1.site.spb.ru/$1 [R,L]
При заходе на
http://www.ru.site.spb.ru/
идет переход на
http://ru.justplan.spb.ru/ru//
Удалил в второй строке /$1 переход идет на http://ru.justplan.spb.ru/ - как и нужно...
Но мне кажется или нет что /$1 удалять неправильно?
$1 - это содержимое первой подмаски правила (что в скобках). если подмаски не нужно, то достаточно ".?" и без $1
$1 - это содержимое первой подмаски правила (что в скобках). если подмаски не нужно, то достаточно ".?" и без $1 »
Нет подмаска важна :)
Примеров без под маски много - нашел бы.
Спасибо что помогли, подсказали с подмаской!
Получается последнее /$1 или точнее $1 можно удалить?
подмаска из условия - это %1, а $1 - из текущего правила... вам виднее, что удалять...
подмаска из условия - это %1, а $1 - из текущего правила... вам виднее, что удалять... »
Спасибо.
Буду тестировать.
В продолжение тестирования появился вопрос:
В какой последовательности лучше выставлять следующие директивы?:
Не будет ли проблем с такой структурой?
- боюсь мало ли что-то в директивах пересечется и потом боком выйдет
# 01 SUBDOMEN REDIRECT
перенаправление из site.com/sub1/ в sub1.site.com
# 02 COOKIE
если есть куки перенаправление в sub1.site.com или sub2.site.com
# 03 Accept-Language
перенаправление в зависимости от языка браузера
# 04 NO-WWW
удаление www перед доменами и субдоменами
Полную версию приложил в аттаче (20-25строк)
Спасибо.
01 имхо лучше в конец, ибо самые первые дб внешние редиректы R... (остальное по сути не редиректы а перезапись урла url rewrite)...
дб внешние редиректы R. »
извините меня но я не понял что значит "..первые дб внешние.."?
первыми правилами лучше ставить внешние редиректы (где флаг R или полный урл в правиле)
Один из последних вопросов :/
В конце концов получилось подобное:
# COOKIE
RewriteCond %{HTTP_COOKIE} lang\=([^\;]+) [NC]
RewriteCond %{HTTP_HOST} !^(www\.)?(ru|en)\.site\.ru$
RewriteRule .? http://%1.site.ru/ [R,QSA]
# Accept-Language
RewriteCond %{HTTP:Accept-Language} ^ru [NC]
RewriteRule ^$ http://ru.site.ru/ [L,R=301]
RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule ^$ http://en.site.ru/ [L,R=301]
#For every other language (including English :)) use English
RewriteRule ^$ http://site.ru/ [L,R=301]
Задумался вот над чем:
1. опятьже стоит ли ставить такую последовательность? - но это не главный...
2. подумываю - не будет ли правильно поставить в данный код некий переключатель который бы:
куки есть - Accept-Language не читаем
куов нет - Accept-Language читаем
- стоит такое ставить или все нормально должно работать и так?
Спасибо.
и при запросе на http://site.ru/ будет вечный цикл (последнее правило без условия)...
RewriteRule ^$ »
^$ сработает только для индексных запросов (только домен), поэтому лучше .?
Порядок не важен... если уж расставлять, то на основе вероятности (первым ставить наиболее вероятное)...
Порядок не важен... если уж расставлять, то на основе вероятности (первым ставить наиболее вероятное)... »
Спасибо :) !
#For every other language (including English :)) use English
RewriteRule ^$ http://site.ru/ [L,R=301]
Думаю может вообще без нее обойтись - будет просто index.html из корня открыт и все.
Так же ничего страшно не будет :) ?
В будущем когда хостинг сменю думаю GeoIP прикрутить
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.