Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Логика работы mod_rewrite? / 15 сообщений из 15, страница 1 из 1
15.08.2019, 15:53
    #39849877
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логика работы mod_rewrite?
есть сайт my.ru
там есть такое my.ru/test (test это папка)
если делаю так

RewriteCond %{REQUEST_URI} ^(/test/)
RewriteRule ^ http://bbb.ru [L]
RewriteRule ^ http://aaa.ru [L]

то при вводе my.ru/test переправляет на http://bbb.ru
а при вводе my.ru/test/ переправляет на http://aaa.ru

а как при вводе my.ru/test/ сделать редирект на my.ru/test/ ?
а при my.ru/test редирект на my.ru/test/xxx.html ?
...
Рейтинг: 0 / 0
15.08.2019, 17:10
    #39849942
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логика работы mod_rewrite?
вадяа как при вводе my.ru/test/ сделать редирект на my.ru/test/ ?А зачем Вам зацикливать редирект? ;-)


вадяа при my.ru/test редирект на my.ru/test/xxx.html ?Ну, можно в RewriteCond указать точное соответствие шаблону, а не "с начала строки". В мануале описаны ещё и варианты простого сравнения, кроме используемого Вами " CondPattern is the condition pattern, a regular expression which is applied to the current instance of the TestString. "
...
Рейтинг: 0 / 0
15.08.2019, 17:57
    #39849983
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логика работы mod_rewrite?
vkleА зачем Вам зацикливать редирект? ;-)вот для начала разобраться как он зацикливается
vkleНу, можно в RewriteCond указать точное соответствие шаблону, а не "с начала строки"варианты можно?
vkleВ мануале описаны ещё и варианты простого сравнения, кроме используемого Вами " CondPattern is the condition pattern, a regular expression which is applied to the current instance of the TestString. "так же варианты
мануал читаю, но вот с логикой построения проблемы.
...
Рейтинг: 0 / 0
15.08.2019, 18:39
    #39849994
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логика работы mod_rewrite?
вот логи
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 init rewrite engine with requested uri /test/
 applying pattern '^(.*)' to uri '/test/'
 RewriteCond: input='/test/' pattern='^(/test/)' => matched
 rewrite '/test/' -> '/test/'
 local path result: /test/
 prefixed with document_root to /usr/local/tomcat/webapps/test/
 go-ahead with /usr/local/tomcat/webapps/test/ [OK]
 init rewrite engine with requested uri /favicon.ico, referer:  http://my.ru/test/ 
 applying pattern '^(.*)' to uri '/favicon.ico', referer:  http://my.ru/test/ 
 RewriteCond: input='/favicon.ico' pattern='^(/test/)' => not-matched, referer:  http://my.ru/test/ 
 applying pattern '^' to uri '/favicon.ico', referer:  http://my.ru/test/ 
 rewrite '/favicon.ico' -> 'http://aaa.ru', referer:  http://my.ru/test/ 
 implicitly forcing redirect (rc=302) with  http://aaa.ru,  referer:  http://my.ru/test/ 
 escaping  http://aaa.ru  for redirect, referer:  http://my.ru/test/ 
 redirect to  http://aaa.ru  [REDIRECT/302], referer:  http://my.ru/test/ 
откуда-то появляется favicon.ico и всё портит
...
Рейтинг: 0 / 0
15.08.2019, 19:05
    #39850002
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логика работы mod_rewrite?
vkleА зачем Вам зацикливать редирект? ;-)


А он хочет роботов заворачивать на порнуху, пусть там, цуки, куролесят.
...
Рейтинг: 0 / 0
15.08.2019, 19:12
    #39850003
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логика работы mod_rewrite?
Ролг ХупинА он хочет роботов заворачивать на порнуху, пусть там, цуки, куролесят.в данном случае на свою спец страницу :)
...
Рейтинг: 0 / 0
15.08.2019, 19:15
    #39850004
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логика работы mod_rewrite?
vkleА зачем Вам зацикливать редирект? ;-)вот для исполнения этого
21949534
...
Рейтинг: 0 / 0
15.08.2019, 21:26
    #39850046
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логика работы mod_rewrite?
вадяvkleНу, можно в RewriteCond указать точное соответствие шаблону, а не "с начала строки"варианты можно?
vkleВ мануале описаны ещё и варианты простого сравнения, кроме используемого Вами " CondPattern is the condition pattern, a regular expression which is applied to the current instance of the TestString. "так же варианты
По сути, в RewriteCond проверяется значение переменной окружения (в фигурных скобках) на соответствие шаблону (регексп) или эквивалентность (ну там есть варианты с больше-меньше) явно заданной строке или равенство (опять же, есть варианты больше-меньше) числу. Если проверка RewriteCond выполнена со значением "истина", то будет выполнено одно (только одно !) следующее правило RewriteRule.

У Вас использовано регулярное выражение для проверки урла. Символ "^" в регекспах означает начало строки. Скобки в данном случае ничего не означают. Текст в скобках - последовательность символов для проверки. Что будет после этих символов - без разницы. Может не быть ничего, а может что-то быть. Для более строгой проверки следует либо явно указать, что после заданной проверяемой последовательности что-то обязательно имеется, либо указать, что строка (значение из переменной) должна закончиться именно на этом месте.

Вариант простой проверки на точное соответствие строк - знак равенства. Его вполне можно использовать для проверки на эквивалентность значения переменной строке "/test" (без финального слеша). Приблизительно так (не проверял):
Код: sql
1.
2.
RewriteCond %{REQUEST_URI} =/test
RewriteRule .* http://my.ru/test/xxx.html [R=301,L]


Или так:
Код: sql
1.
2.
RewriteCond %{REQUEST_URI} ^/test$
RewriteRule .* http://my.ru/test/xxx.html [R=301,L]


Хотя, можно то же самое попробовать проще:
Код: sql
1.
RewriteRule ^/test$ http://my.ru/test/xxx.html [R=301,L]



вадяоткуда-то появляется favicon.ico и всё портитОх уж этот фавайкон! Его браузер запрашивает. Попробуйте обращаться к серверу wget'ом. Можно с ключиком -d (добавляет вывод заголовков, там бывает много полезного при отладке редиректов).


вадяvkleА зачем Вам зацикливать редирект? ;-)вот для исполнения этого
21949534 Хм. Нормальный бот просекет такую подставу. Вот я точно не знаю, кто именно дает команду "стоп, хватит", но сам наблюдал при использовании wget остановку после двадцати циклов. Современные браузеры тоже сообщают о проблеме.
По мне так отработать обращение скриптом со sleep длиной секунд в двадцать и ничего не выдать в ответ. Или выдать принудительно какой-нить совсем левый код ответа из 500-й группы. Дабы не косить под DDoS.
Ну если хочется именно зациклить, то где-нить повыше редирект просто напишите без каких-либо проверок - и будет Вам цикл. Обычно приходится искать, где циклится, а Вы ровно обратное хотите. :)
...
Рейтинг: 0 / 0
15.08.2019, 23:36
    #39850085
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логика работы mod_rewrite?
поставлю вопрос несколько иначе
есть

Код: xml
1.
2.
3.
RewriteCond  %{REQUEST_URI} !^/test/  
RewriteCond  %{REQUEST_URI} !^[/test]/
RewriteRule . http://my.ru/test/xxx.jsp [R,L]



отправляет на xxx.jsp
всё, кроме my.ru/test/
как исключить из редиректа ещё и такое my.ru/test
...
Рейтинг: 0 / 0
15.08.2019, 23:55
    #39850086
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логика работы mod_rewrite?
Попробуйте написать вопросительный знак (символ может быть, а может не быть) после последнего слеша.
...
Рейтинг: 0 / 0
16.08.2019, 00:21
    #39850088
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логика работы mod_rewrite?
vkle,
так правильнее
Код: html
1.
2.
3.
RewriteCond  %{REQUEST_URI} !^/test/ 
RewriteCond  %{REQUEST_URI} !^[^/test/]
RewriteRule . http://my.ru/test/xxx.jsp [R,L]


так
Код: html
1.
2.
3.
RewriteCond  %{REQUEST_URI} !^/test/?
RewriteCond  %{REQUEST_URI} !^[^/test/?]
RewriteRule . http://my.ru/test/xxx.jsp [R,L]


не отрабатывает такое my.ru/testdddd
...
Рейтинг: 0 / 0
16.08.2019, 00:28
    #39850090
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логика работы mod_rewrite?
ЗЫ правильнее, чем 21950594
но не даёт желаемого
...
Рейтинг: 0 / 0
16.08.2019, 09:47
    #39850168
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логика работы mod_rewrite?
вадяне отрабатывает такое my.ru/testddddНапечатайте уже доллар в шаблоне - "конец проверяемой строки". Или используйте простое сравнение строк.
Не понимаю назначение второго RewriteCond. Что он должен проверять по идее?
...
Рейтинг: 0 / 0
16.08.2019, 10:52
    #39850218
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логика работы mod_rewrite?
vkleНе понимаю назначение второго RewriteCond. Что он должен проверять по идее?согласен, условие не корректно....

очередной вариант
Код: html
1.
2.
3.
4.
RewriteCond  %{REQUEST_URI} !((^/test/)|(^/test)|(^/robots.txt))
RewriteRule . http://my.ru/test/xxx.jsp [R,L]
RewriteCond  %{REQUEST_URI} (^/test[^/])
RewriteRule . http://my.ru/test/xxx.jsp [R,L]


вроде устраивает :)
...
Рейтинг: 0 / 0
02.09.2019, 21:09
    #39856439
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логика работы mod_rewrite?
появился вопрос
как добавить параметр
?REMOTE_ADDR=%{REMOTE_ADDR}
но так чтоб он не был виден в адресной строке?
ProxyPass может в этом помочь?
(ProxyPass используется для проксирования на localhost)
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Логика работы mod_rewrite? / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]