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

Компьютерный форум 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

 

Deadooshka


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

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


если кукис отсылается с каждым запросом, то у вас вечный редирект будет... нужно добавить дополнительную проверку (нпр по %{HTTP_HOST}), и уточнить, на какой домен ставится кукис (может на все субдомены)...
реферер может и не отсылаться вовсе (регулируется в браузере), впрочем, как и кукисы...
Цитата blacks2:
RewriteCond %{HTTP_HOST} (www\.)? sub2\. site.\spb\.ru$
RewriteCond %{REQUEST_URI} !^(/)? sub2/ »
уберите лишние пробелы из условий, и экранируйте спец-символы

Отправлено: 12:58, 16-08-2009 | #2



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

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


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


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

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


Цитата Sham:
если кукис отсылается с каждым запросом, то у вас вечный редирект будет... нужно добавить дополнительную проверку (нпр по %{HTTP_HOST}), и уточнить, на какой домен ставится кукис (может на все субдомены)...
реферер может и не отсылаться вовсе (регулируется в браузере), впрочем, как и кукисы...
Спасибо!

Кукис ставится на только на корень сайта
Ставится из субдоменов
Подскажите пожалуйста код для проверки
(пробавал по совету одного хорошего человека с другого форума поставить
RewriteCond %{HTTP_HOST} !^(en|ru) [NC] но не помогло
)

Цитата Sham:
уберите лишние пробелы из условий, и экранируйте спец-символы
пробелы появились случайно во время поста.
в оригинале их нет. пост исправлю.

Что еще необходимо экранировать?

Отправлено: 18:48, 16-08-2009 | #3


Deadooshka


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

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


т.е. если в наличии кука setting и НЕ субдомен sub1-2 то редиректим на субдомен 4 уровня

Код: Выделить весь код
RewriteCond %{HTTP_COOKIE} setting\=([^\;]+) [NC]
RewriteCond %{HTTP_HOST} !^(www\.)?sub[12]\.site\.spb\.ru$
RewriteRule . http://%1.site.spb.ru/ [R,QSA,L]
или если нужно условие, что при наличии куки setting хост должен быть site.spb.ru (без sub1-2)

Код: Выделить весь код
RewriteCond %{HTTP_COOKIE} setting\=([^\;]+) [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?site\.spb\.ru$
RewriteRule . http://%1.site.spb.ru/ [R,QSA,L]
если куки не шлются, то редиректа не будет

вообще тут использование куков непонятно (в зависимости от чего ставятся куки, и на домен какого уровня)

Отправлено: 10:21, 17-08-2009 | #4


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


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

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


Спасибо. Сегодня ночью как проснусь проверю код.


Код: Выделить весь код
RewriteCond %{HTTP_HOST} !^(www\.)?sub[12]\.site\.spb\.ru$
- в этой строке не должно стоять разелителя между 1 и два ?
- навроде (en|ru)


Цитата Sham:
вообще тут использование куков непонятно (в зависимости от чего ставятся куки, и на домен какого уровня)
- куки ставятся в зависимости захода в тот или иной sub1 / sub2
- ставятся на корень сайта - там где лежит htaccess который и перенаправляет...

Отправлено: 11:04, 17-08-2009 | #5


Deadooshka


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

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


Цитата blacks2:
в этой строке не должно стоять разелителя между 1 и два ? »
это символьный класс
Цитата blacks2:
ставятся на корень сайта »
кукисы на домен ставятся... и браузер при запросе на конкретный домен шлет те кукисы, которые записаны на этот домен/субдомены (не важно какого уровня).
разберитесь с матчастью...

Отправлено: 11:16, 17-08-2009 | #6


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


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

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


Цитата Sham:
Цитата blacks2:
в этой строке не должно стоять разелителя между 1 и два ? »
это символьный класс
Тоесть в случае с именами а не цифрами всетаки разделитель необходимо поставить?

Цитата Sham:
Цитата blacks2:
кукисы на домен ставятся... и браузер при запросе на конкретный домен шлет те кукисы, которые записаны на этот домен/субдомены (не важно какого уровня).
разберитесь с матчастью...
При работе на суб папки вида site.spb.ru/sub2 все хорошо работает
А вот на субдомены нет

С матчастью воевать уже не готов - достала - 4или 5тые сутки.

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


Deadooshka


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

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


Цитата blacks2:
Тоесть в случае с именами а не цифрами всетаки разделитель необходимо поставить? »
ну да, типа
Код: Выделить весь код
!^(www\.)?(en|ru)\.site\.spb\.ru$
если нужно редиректить в зависимости от языка браузера, так и скажите...

Отправлено: 14:55, 17-08-2009 | #8


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


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

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


Српасибо.

Цитата Sham:
если нужно редиректить в зависимости от языка браузера, так и скажите...
Эх... если бы
Для редиректа в зависимости от языка браузера есть вроде как специальная директива
Даже "калькулятор htaccess" в нете видел который строет такое перенаправление.
2 или 3 строки.

Задача в том что
Пользователь один раз зайдет с site.spb.ru на ru.site.spb.ru и ему запишутся куки
И в следующий раз заходя на site.spb.ru будет перенаправление по куки на ru.site.spb.ru

Только что-то заело
Буду пробовать ваше предложение сегодня ночью

Отправлено: 22:40, 17-08-2009 | #9


Deadooshka


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

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


Цитата blacks2:
Пользователь один раз зайдет с site.spb.ru на ru.site.spb.ru и ему запишутся куки
И в следующий раз заходя на site.spb.ru будет перенаправление по куки на ru.site.spb.ru »
в этом случае кукис нужно ставить на домен site.spb.ru, иначе по дефолту запишется на ru.site.spb.ru и ваш вариант не прокатит....

кукис можно через флаг в правиле поставить...

Отправлено: 23:38, 17-08-2009 | #10



Компьютерный форум 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




 
Переход