Войти

Показать полную графическую версию : Ошибка перенаправления в субдоменах


Страниц : 1 [2]

blacks2
20-08-2009, 06:32
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 удалять неправильно?

Sham
20-08-2009, 13:24
$1 - это содержимое первой подмаски правила (что в скобках). если подмаски не нужно, то достаточно ".?" и без $1

blacks2
20-08-2009, 14:48
$1 - это содержимое первой подмаски правила (что в скобках). если подмаски не нужно, то достаточно ".?" и без $1 »
Нет подмаска важна :)
Примеров без под маски много - нашел бы.
Спасибо что помогли, подсказали с подмаской!
Получается последнее /$1 или точнее $1 можно удалить?

Sham
20-08-2009, 15:40
подмаска из условия - это %1, а $1 - из текущего правила... вам виднее, что удалять...

blacks2
21-08-2009, 00:31
подмаска из условия - это %1, а $1 - из текущего правила... вам виднее, что удалять... »

Спасибо.
Буду тестировать.

blacks2
24-08-2009, 17:58
В продолжение тестирования появился вопрос:

В какой последовательности лучше выставлять следующие директивы?:

Не будет ли проблем с такой структурой?
- боюсь мало ли что-то в директивах пересечется и потом боком выйдет


# 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строк)

Спасибо.

Sham
25-08-2009, 03:17
01 имхо лучше в конец, ибо самые первые дб внешние редиректы R... (остальное по сути не редиректы а перезапись урла url rewrite)...

blacks2
25-08-2009, 03:50
дб внешние редиректы R. »
извините меня но я не понял что значит "..первые дб внешние.."?

Sham
25-08-2009, 04:38
первыми правилами лучше ставить внешние редиректы (где флаг R или полный урл в правиле)

blacks2
26-08-2009, 03:25
Один из последних вопросов :/
В конце концов получилось подобное:

# 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 читаем

- стоит такое ставить или все нормально должно работать и так?

Спасибо.

Sham
26-08-2009, 04:26
и при запросе на http://site.ru/ будет вечный цикл (последнее правило без условия)...
RewriteRule ^$ »
^$ сработает только для индексных запросов (только домен), поэтому лучше .?
Порядок не важен... если уж расставлять, то на основе вероятности (первым ставить наиболее вероятное)...

blacks2
26-08-2009, 04:35
Порядок не важен... если уж расставлять, то на основе вероятности (первым ставить наиболее вероятное)... »
Спасибо :) !

#For every other language (including English :)) use English
RewriteRule ^$ http://site.ru/ [L,R=301]
Думаю может вообще без нее обойтись - будет просто index.html из корня открыт и все.
Так же ничего страшно не будет :) ?


В будущем когда хостинг сменю думаю GeoIP прикрутить




© OSzone.net 2001-2012