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

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


Цитата Sham:
в этом случае кукис нужно ставить на домен site.spb.ru, иначе по дефолту запишется на ru.site.spb.ru и ваш вариант не прокатит....
Да. Кукисы выставляются с помощью METА в ru.site.spb.ru/index.html



Цитата Sham:
кукис можно через флаг в правиле поставить...
Мне знаком только такой способ:
Код: Выделить весь код
RewriteRule ^(.*)(ru|en)/$ - [co=lang:$2:.site.spb.ru:7200:/]
но н не работает на моем хостинге:
Цитата:
Тут даже дело не в nginx, а в версии Apache. Флаг cookie доступен в Apache 2.0.40
и более поздних. У нас 1-я ветка Apache (1.3.41).



Может еще какой есть... или я не понял о чем вы ?

Отправлено: 00:28, 18-08-2009 | #11



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

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


Deadooshka


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

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


остается javascript: вешать на ссылки перехода ru\en события onclick, по которым ставить кукис...

Отправлено: 01:05, 18-08-2009 | #12


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


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

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


Цитата Sham:
остается javascript: вешать на ссылки перехода ru\en события onclick, по которым ставить кукис... »
Нет. Метой все ок получается.

Вот странная штука: все нижеследующие примеры рабочие
Может хочтер что-то вписал без моего ведома.. может я по недосыпу навалял дурака.

Посмотрите пожалуйста - на каком варианте лучше остановить выбор?

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

# PETERHOST 2009 + MY
	RewriteCond %{HTTP_HOST} (www\.)?en\.site.\spb\.ru$
	RewriteCond %{REQUEST_URI} !^(/)?en/
	RewriteRule ^(.*)$ en/$1

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


# ANTICHAT v1
#	RewriteCond %{HTTP_COOKIE} lang=([^;]+) [NC]
#	RewriteCond %{HTTP_HOST} !^(en|ru) [NC]
#	RewriteRule ^(.*)$ http://%1.site.spb.ru/ [R=302,QSA,L]


# OS zone v3
#	RewriteCond %{HTTP_COOKIE} lang\=([^\;]+) [NC]
#	RewriteCond %{HTTP_HOST} !^(www\.)?(ru|en)\.site\.spb\.ru$
#	RewriteRule . http://%1.site.spb.ru/ [R,QSA,L]


# My v1
#	RewriteCond %{HTTP_COOKIE} lang=([^;]+) [NC]
#	RewriteRule ^$ http://%1.site.spb.ru/ [R=302,QSA,L]


# My v2
#	RewriteCond %{HTTP_COOKIE} lang=([^;]+) [NC]
#	RewriteRule ^$ http://%1.site.spb.ru/ [R,QSA,L]
Спасибо.

Отправлено: 01:29, 18-08-2009 | #13


Deadooshka


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

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


там где с проверкой домена (как страховка от зацикливания), а про регулярное выражение с доменом вам лучше знать...
Код: Выделить весь код
RewriteCond %{HTTP_COOKIE} lang\=([^\;]+) [NC]
RewriteCond %{HTTP_HOST} !^(www\.)?(ru|en)\.site\.spb\.ru$ [NC]
RewriteRule .? http://%1.site.spb.ru/ [R,QSA,L]
просто в первом варианте лишняя подмаска, которая не используется, и лишний квантификатор * (достаточно ".?", ибо иначе для проверки захватывается вся строка, что непроизводительно, но не критично).
Это сообщение посчитали полезным следующие участники:

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


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


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

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


Огромное спасибо!!!!
(жаль нет кнопочки спасибо, а "полезное сообщение" столь мала

Цитата Sham:
а про регулярное выражение с доменом вам лучше знать... »
Не пойму о чем Вы?

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


Deadooshka


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

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


в том смысле, что вторая строка - это проверка домена из запроса, и регулярное выражение можно по-разному составить - вам виднее как это сделать (любой вариант подойдет).

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


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


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

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


Пробовал добавить условие:

с
www.sub1.site.spb.ru (длинновато... но думаю пригодится для субдоменов)
на
sub1.site.spb.ru
- тобешь убираем www

Попробовал два нижеследующих вариант (min www v2 и min www v2)
Но они не сработали
Подскажите пожалуйста как можно подправить?

Код: Выделить весь код
# OS zone v3
	RewriteCond %{HTTP_COOKIE} lang\=([^\;]+) [NC]
	RewriteCond %{HTTP_HOST} !^(www\.)?(sub1|sub2)\.site\.spb\.ru$
	RewriteRule . http://%1.site.spb.ru/ [R,QSA]

# min www v1
	RewriteCond %{HTTP_HOST} ^www\.%1.\site\.spb\.ru\ [NC]
	RewriteRule (.*) http://%1.site.spb.ru/$1 [R=301,L]

# min www v2
# 	RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
# 	RewriteRule ^(.*)$ http://%1/$1 [R=301,QSA,]
Спасибо

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


Deadooshka


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

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


Цитата blacks2:
RewriteRule . http://%1.site.spb.ru/ [R,QSA] »
знак точка - любой символ, и если пусто, то не сработает. Надо добавить "?"...
Код: Выделить весь код
RewriteRule .? http://%1.site.spb.ru/ [R,QSA]
Цитата blacks2:
RewriteCond %{HTTP_HOST} ^www\.%1.\site\.spb\.ru\ [NC] »
не понятно, откуда %1 в условии и правиле, ибо если подмаски нет, то пусто... + лишний экранирующий слеш в конце (ошибка)..
Цитата blacks2:
[R=301,QSA,] »
лишняя запятая где флаги

Отправлено: 23:15, 19-08-2009 | #18


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


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

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


Цитата Sham:
знак точка - любой символ, и если пусто, то не сработает. Надо добавить "?"... »
Огромное спасибо!

Код: Выделить весь код
# OS zone
	RewriteCond %{HTTP_COOKIE} lang\=([^\;]+) [NC]
	RewriteCond %{HTTP_HOST} !^(www\.)?(ru|en)\.justplan\.spb\.ru$
	RewriteRule .? http://%1.justplan.spb.ru/ [R,QSA]

# убираем www
	RewriteCond %{HTTP_HOST} ^www\?(ru|en)\site\.spb\.ru [NC] »
	RewriteRule (.*) http://(ru|en).justplan.spb.ru/$1 [R=301,L]
Смею предположить методом "анализа и тыка" что последние две строки наверно должны
выглядеть так?

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


Deadooshka


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

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


Код: Выделить весь код
RewriteCond %{HTTP_HOST} ^www\.(ru|en)\.site\.spb\.ru [NC]
RewriteRule ^(.*)$ http://%1.site.spb.ru/$1 [R,L]

Отправлено: 03:18, 20-08-2009 | #20



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




 
Переход