GD Star Rating
loading...
loading...
Создам пост вопрошаек по mod_rewrite:
мне нужно получать domen.com/en/?bla–bla
ситуация такая, в куках сохраняется выбранный юзером lang и в зависимости от lang должен добавляться к пути либо /en/ либо /ru/
пишу пока так, пока не знаю как добавлять после /en/?bla–bla :
RewriteCond %{HTTP_COOKIE} ^.*lang=en.*$ [NC]
RewriteRule (.*) /en/ [L,QSA]
получаю 310 ошибку — циклическая переадресация.
нужна ваша помощь.
Включи RewriteLog. Если не разберешься, то кидай сюда лог.
RewriteLog создается пустой.
: RewriteLogLevel 9
:http://paste.pro/5141352
вообще не въезжаю, помоги разобраться
Я понял, что ступил, нужно искать причину с другой стороны.
Вопрос как правильно реализовать переадресацию открыт!
Пойду еще подумаю
То есть пользователь выбрал однажды lang=en и всюду куда бы он не переходил по сайту, чтобы в строке адреса его сопровождал /en/
то есть заходит на domen.com – в строку адреса подставляется domen.com/en, но при этом юзер получает страницу domen.com
также переходит по адресу domen.com/about (или domen.com/en/about) – а в строке адреса получает всегда domen.com/en/about, при этом получает страницу из domen.com/about
пишу пока так условие, пока не знаю как добавлять после /en/?bla–bla :
RewriteCond %{HTTP_COOKIE} ^.*lang=en.*$ [NC]
правило не знаю как правильно описать
: чтобы domen.com/about в адресной строке юзера превратилось в domen.com/en/about, тебе нужно либо сделать редирект на domen.com/en/about, либо воспользоваться history.pushState(), но это яваскрипт и хтмл5. То есть (если я конечно тебя правильно понял) ты вообще не ту задачу решаешь. Тебе и рерайт на самом деле не нужен, потому что вытягивать lang = en из куки ты уже можешь и в движке самого сайта (а можешь преобразовывать url в url?lang=$1). И на основании куки уже нужно генерить все ссылки на самом сайте.
: да, ты правильно подсказываешь. Нужно периодически отдыхать, тогда и мыслишь правильно. Спасибо за советы. Буду дальше думать.
: да я сам такой же
Вышеописанная проблема была переосмыслена и решена внесением изменений в ядро.
Появился следующий вопрос.
Суть такова: необходимо все запросы юзера обрабатывать через https. Решено так:
RewriteCond %{HTTPS}!=onhttps://% {HTTP_HOST}%{REQUEST_URI}
RewriteCond %{HTTP_HOST} site.com [OR]
RewriteRule ^(.*)$
Все работает отлично, но вот возникла проблема и для её решения необходимо в этом правиле сделать исключение.http://site.com/exception
То есть нужно через https пропускать все запросы к сайту, кроме
Пробовал перед правилом переадресации на https поставить:
RewriteRule ^.*exception$ /exception [L]
Не помогло.
Обращаюсь к вам, знатоки.
: добавить третий RewriteCond типа %{REQUEST_URI}!=exception (не помню уже как они пишутся), не?
: Спасибо! Помогло:
RewriteCond %{REQUEST_URI}!= /exception
: А как быть в такой ситуации?
Необходимо, чтобы все переходы, кроме одного, всегда проходили по https протоколу, если делаю так:
RewriteCond %{HTTPS}!=onhttps://site.ru/$1 [R]
RewriteRule ^(.*)$
Все отлично, все переходы идут через https. Если, в ожидании исключения для адреса пишу так:
RewriteCond %{HTTPS}!=onhttps://site.ru/$1 [R]
RewriteCond %{REQUEST_URI}!= /?exception&another
RewriteRule ^(.*)$
Перестает работать редирект для всех.
: апач в логи может написать, какой именно request_uri он видит? Что происходит, если написать что-нибудь типа RewriteCond %{REQUEST_URI}!= /smth?
весь мой опыт, на самом деле, сводится к обману вордпресса и выдаче двух самописных фидов вместо предложенных вордпрессом
: и это, ты уверен что тебе нужен мод_рерайт, а не редирект юзера на адрес с вбитым протоколом https?
: такая же фигня с опытом
: да, там с особенностями api процессинга связано. В общем решил проблему. Результирующий htaccess пополнился такими строками:https://site.ru/$1 [R]http://site.ru/?exception&another
RewriteCond %{HTTPS}!=on
RewriteCond %{REQUEST_URI}!= /?exception&another
RewriteRule ^(.*)$
Проблема, из-за которой не работало так как надо была банально проста – сам же наступил на свои грабли, которые с дуру написал и сам же про них забыл.
Action в форме был написан в виде абсолютно пути (это ж надо было такое написать!):
Извиняюсь за беспокойство.