Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Ошибка перенаправления в субдоменах

Ответить
Настройки темы
Ошибка перенаправления в субдоменах

Пользователь


Сообщения: 99
Благодарности: 2

Профиль | Отправить PM | Цитировать


Изменения
Автор: blacks2
Дата: 16-08-2009
Ищутся добрые люди готовые помочь!

3и или 4е сутки не могу собрать следу штуку :


ЗАДАЧА:
При заходе на site.spb.ru по установленным кукам посетитель перенаправлялся
на один из субдоменов и там оставался. Позже добавить на весь сайт редиект
«с www» на «без www».


ПОДРОБНЕЙ:
Пользователь заходит на site.spb.ru
В корне сайта лежит htaccess

Код: Выделить весь код
RewriteEngine On
RewriteBase /

# субдомены – построены по правилам моего хостера
	RewriteCond %{HTTP_HOST} (www\.)?sub1\.site.\spb\.ru$
	RewriteCond %{REQUEST_URI} !^(/)? sub1/
	RewriteRule ^(.*)$ sub1/$1

	RewriteCond %{HTTP_HOST} (www\.)? sub2\.site.\spb\.ru$
	RewriteCond %{REQUEST_URI} !^(/)? sub2/
	RewriteRule ^(.*)$ sub2/$1

# прочитать значение куки и перенаправить на субдомен указанный в куки
	RewriteCond %{HTTP_COOKIE} setting=([^;]+) [NC]
	RewriteRule ^(.*)$ http://%1.site.spb.ru/ [R=302,QSA,L]

1. Если куки установлены то в зависимости от них идет перенаправление на
sub1.site.spb.ru или sub2.site.spb.ru

2. Если куков нет то ждется переход от пользователя на sub1.site.spb.ru или sub2.site.spb.ru
Где и ставятся куки.



ПРОБЛЕМА:
Редирект по куки на на субдомены идет но с ошибкой:

«Firefox определил, что сервер перенаправляет запрос на этот адрес таким образом, что он никогда не завершится.»
«Эта проблема может возникать при отключении или запрещении принятия cookies.»



Все вышесказанное работает на
виртуальном хостинге, PHP не используется, JavaScript тоже, остальные скрипты тоже
- Только META теги, htaccess, html !



Саппорт хостинга предложил что-то непонятное но вроде правдивое:

«Объясняю на примере
Итак, посетитель заходит на site.spb.ru, оттуда идет на страницу /sub1
Сейчас по умолчаню ему выдается cookie, а надо бы проверить реферер
Если реферрер НЕ sub1.site.spb.ru, то выдаем cookie и редиректим на поддомен

Поскольку посетитель новый, его перенаправили на поддомен
Итак, мы попадаем на ту же самую страницу. Но повторного редиректа не происходит,
поскольку этому мешает реферрер.»


= Пробовал закрывать по рефералу - не сработало
Код: Выделить весь код
RewriteCond %{HTTP_REFERER} ^http://(www\.)?en\.site\.spb\.ru/index.html$ [NC,OR]


Кто может, помогите решением!
Если необходимо могу приаттачить в zip весь пример.

Помогите пожалуйста!

Отправлено: 09:07, 15-08-2009

 

Пользователь


Сообщения: 99
Благодарности: 2

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
	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 удалять неправильно?

Отправлено: 06:32, 20-08-2009 | #21



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Deadooshka


Сообщения: 2511
Благодарности: 689

Профиль | Отправить PM | Цитировать


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

Отправлено: 13:24, 20-08-2009 | #22


Пользователь


Сообщения: 99
Благодарности: 2

Профиль | Отправить PM | Цитировать


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

Отправлено: 14:48, 20-08-2009 | #23


Deadooshka


Сообщения: 2511
Благодарности: 689

Профиль | Отправить PM | Цитировать


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

Отправлено: 15:40, 20-08-2009 | #24


Пользователь


Сообщения: 99
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата Sham:
подмаска из условия - это %1, а $1 - из текущего правила... вам виднее, что удалять... »
Спасибо.
Буду тестировать.

Отправлено: 00:31, 21-08-2009 | #25


Пользователь


Сообщения: 99
Благодарности: 2

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: txt 25строк.txt
(869 байт, 6 просмотров)

В продолжение тестирования появился вопрос:

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

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


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

Спасибо.

Отправлено: 17:58, 24-08-2009 | #26


Deadooshka


Сообщения: 2511
Благодарности: 689

Профиль | Отправить PM | Цитировать


01 имхо лучше в конец, ибо самые первые дб внешние редиректы R... (остальное по сути не редиректы а перезапись урла url rewrite)...
Это сообщение посчитали полезным следующие участники:

Отправлено: 03:17, 25-08-2009 | #27


Пользователь


Сообщения: 99
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата Sham:
дб внешние редиректы R. »
извините меня но я не понял что значит "..первые дб внешние.."?

Отправлено: 03:50, 25-08-2009 | #28


Deadooshka


Сообщения: 2511
Благодарности: 689

Профиль | Отправить PM | Цитировать


первыми правилами лучше ставить внешние редиректы (где флаг R или полный урл в правиле)
Это сообщение посчитали полезным следующие участники:

Отправлено: 04:38, 25-08-2009 | #29


Пользователь


Сообщения: 99
Благодарности: 2

Профиль | Отправить PM | Цитировать


Один из последних вопросов :/
В конце концов получилось подобное:

Код: Выделить весь код
# 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 читаем

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

Спасибо.

Отправлено: 03:25, 26-08-2009 | #30



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Ошибка перенаправления в субдоменах

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Перенаправления домена на сайт Ceval Хочу все знать 0 16-12-2009 19:19
Непонятная ошибка virtualdub при просмотре либо конвертации DV файла-ошибка only в VD illusionmgs Видео и аудио: обработка и кодирование 9 21-03-2009 14:47
Запрет перенаправления папок в домене. MTA Microsoft Windows NT/2000/2003 1 17-07-2007 09:43
Нужно организовать перенаправления печати с одного сервера на другой babki Microsoft Windows NT/2000/2003 6 16-08-2006 09:35
[решено] Перенаправления папки спулера (spooler) на сервере печати babki Microsoft Windows NT/2000/2003 4 12-11-2005 15:07




 
Переход