Ru-Board.club
← Вернуться в раздел «В помощь системному администратору»

» Apache+mod_rewrite

Автор: Cheery
Дата сообщения: 09.11.2004 02:45
Infection

RewriteCond %{REQUEST_URI} ^/resort.* [OR]
RewriteCond %{REQUEST_URI} ^/countr.* [OR]
RewriteCond %{REQUEST_URI} ^/narration.*
RewriteRule ^/resort.+id\=([0-9]+)$ index.php?Resort=$1

а так?

возможно нужен еще один RewriteCond
RewriteCond %{QUERY_STRING} id=([0-9]+)
тогда тут

RewriteRule ^/resort.*$ index.php?Resort=%1
Автор: Mira
Дата сообщения: 15.11.2004 10:05
подскажите как задать в патерн строке знак процента %
т.е. если надо проверить строку prosto%20probel

и вопрос по подчеркиванию(_) в пхп как его проверять?


спасибо.
Автор: Infection
Дата сообщения: 16.11.2004 21:48
на сайте есть только один файл - index.php

ссылки выглядят как

index.php?Country=141
index.php?Resort=523
index.php?Story=218
index.php?Narration=654
index.php?Agent=721

столкнулся с проблемой индексации поисковиками
то бишь надо сделать robots.txt и запретить ходить по некоторым урлам

то в robotos.txt строку запроса не пропишешь
чего делать?

сперва подумал о двойном реврайте, к примеру запрашиваем
index.php?Country=141
потом переделываем в /Country/141
и потом снова реврайтим в index.php?Country=141

но для поисковика же этот реврайт не заметен... он запросит урл index.php?Country=141
и его же и получит...

как быть?
ссылки переделывать на всем сайте довольно проблематично, то есть везде во всех ссылках заменить ссылки на формат /Country/141, а потом общаком реврайтить в index.php?Country=141

есть варианты решения?

мод реврайт может отдавать браузеру код, что по документу идет редирект

то бишь
запрашивается урл index.php?Country=141
а модревайт отвечает что урл редиректится на /Country/141, то есть чтобы поисковый боту расценивал реврайт как редирект
Автор: Infection
Дата сообщения: 17.11.2004 22:00
вроде в модреврайте есть то что мне нужно

RewriteCond %{QUERY_STRING} ^Country=([0-9]+)$
RewriteRule ^index.php$ http://192.168.0.2/country/%1 [R]

RewriteCond %{REQUEST_URI} ^/country/([0-9]+)$
RewriteRule ^country/([0-9]+) http://192.168.0.2/index.php?Country=$1 [last]


то есть робот обращается к урлу index.php?Country=11 и первое правило его редиректит на http://192.168.0.2/country/11

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

только два вопроса:
[per-dir /var/www/] redirect to http://192.168.0.2/country/69?Country=69 [REDIRECT/302]

почему редиректится на http://192.168.0.2/country/69?Country=69
то бишь от куда берется %{QUERY_STRING}? Мне он нафиг не нужен

и второе, почему у меня все это дело в цикл заворачивается? Во втором же правиле ясно сказано, что LAST?
Автор: xntx
Дата сообщения: 17.11.2004 22:14
Infection

Цитата:
то в robotos.txt строку запроса не пропишешь
чего делать?

http://forum.ru-board.com/robots.txt
тут прописана строка запроса, и роботы не индексируют это
это так, немного оффтоп
Автор: Infection
Дата сообщения: 17.11.2004 23:00
xntx, не знаю как там, но мой mnogosearch не понимает такие записи

User-agent: *
Disallow: /index.php?act=agents
Disallow: /index.php?Review
Disallow: /index.php?act=reviews
Disallow: /index.php?Country
Disallow: /index.php?act=countries
Disallow: /index.php?Resort
Disallow: /index.php?act=resorts
Disallow: /index.php?Narration
Disallow: /index.php?act=narrations
Disallow: /index.php?act=tours

и на сколько я помню, в robots.txt указываются папки и отдельные файлы, но не как названия файлов с их аргументами
Автор: xntx
Дата сообщения: 18.11.2004 00:27
Infection
ну не знаю...
http://www.searchengineworld.com/cgi-bin/robotcheck.cgi
ничего не говорит, да и поисковики не индексят варезник...
Автор: Infection
Дата сообщения: 19.11.2004 10:49
чтобы работало 'env|E=VAR:VAL'

надо чго-то прописывать? а то я у меня не работает. Переменная всегда пустой оказывается.
вопрос http://forum.ru-board.com/topic.cgi?forum=8&topic=1544&start=80#15 остается не решенным
Автор: sghi
Дата сообщения: 08.12.2004 12:27
Есть ссылка вроде http://sitename.ru/core.php?src=t&page=name1/name2/page_&n=1
А хочется чтобы было http://sitename.ru/core/src_t/name1/name2/page_1

В .htaccess пишу:
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^(.*)core/src_t/(.*)$ $1/core.php?src=t&page=$2
RewriteRule ^(.*)_(.*)$ $1_&n=$2

В итоге работает только http://sitename.ru/core/src_t/name1/name2/page_&n=1
А с заменой "_&n=" на просто "_" не получается. Где я ошибся или не дописал что-то? Помоему я с (.*) напутал.
Автор: sghi
Дата сообщения: 09.12.2004 14:52
Мда... Кажется причина найдена, но от этого не легче: мой Apache 1.3 вроде игнорирует символы "&" и "=" при замене "_&n=" на просто "_". Получается что Apache меняет "_n" на "_", чего мне совсем не нужно -- мало ли где сочетание "_n" встречается.
Что можно сделать в этом случае?
Автор: keha
Дата сообщения: 10.12.2004 11:44
Хочу, чтобы при работе форума было
http://forum.мойдомен.ru/ikonboard.cgi
вместо
http://forum.мойдомен.ru/cgi-bin/ikonboard/ikonboard.cgi
не показывались лишние директории

Может кто-нибудь объяснить почему работает код

Код:
RewriteRule ^([a-z]*)\.cgi$ cgi-bin/ikonboard/$1.cgi
Автор: phpbbmods
Дата сообщения: 21.12.2004 14:16
Уважаемые,
Совсем запутался
Есть значит /catalog/
Пишу в RewriteRule ^ catalog /(.*)/$ catalog/index.php?prd=$1
Все работает на ура
но когда начинаю разбирать на страницы
бред получается, может я туплю?
Выборка с mysql по полю prd
Разбиваю на страницы все ок считает и проставляет номера
А вот вывод не идет там использую catalog/index.php?page=1 и тд
Что то посоветуете
Заранее благодарю,
Автор: Tropin
Дата сообщения: 21.12.2004 16:06
phpbbmods
Три раза прочитал, но ничего не понял...
Что не работает и что хочется получить в итоге?
Автор: phpbbmods
Дата сообщения: 21.12.2004 16:37
Tropin
что не онятно? prd=name вывод /catalog/name.html
если name штук 50 надо разбить на страницы /catalog/name.html?page=1
может просто это не реально???
Автор: xy
Дата сообщения: 21.12.2004 17:19
phpbbmods
я тоже не понял%)

---

Подскажите плиз как сделать, что бы все адреса: хттп://урл/страница на деле читались из хттп://урл/РУ/страница (кроме отдельно указанных каталогов-языков)

или же чтобы при заходе на хттп://урл/страница бровзер жестко редиректило (в смысле меняло адрес и грузило оттудова) на хттп://урл/РУ/страницу (с исключениями аналогично вышеописанному)

второй вариант даже предпочтительнее - буду признателен за помощь
Автор: Tropin
Дата сообщения: 21.12.2004 18:03
xy
RewriteCond %{REQUEST_URI} !^/РУ/*$
RewriteCond %{REQUEST_URI} !^/ЕН/*$
RewriteRule ^(.*)$ хттп://урл/РУ/$1 [R]

phpbbmods
Ну не въезжаю я....
Пойду дома подумаю...
Автор: xy
Дата сообщения: 21.12.2004 18:10
Tropin
!!
спасибо!

Добавлено
хм.. не работает, а можно еще, чтоб к урлу привязано небыло (т.е. оставалось внутри того же урла, но явно урл не указывался)
Автор: phpbbmods
Дата сообщения: 21.12.2004 19:46
Еще раз
есть скрипт выводит с mysql поле prd=name
текстовое поле txt соответственно с текстом,
пишем RewriteRule ^ catalog /(.*)/$ catalog/index.php?prd=$1
при выводе /catalog/name.html видно все записи поля txt
вот значит кода много записей разбиваю на страницы
все ок там типа создаются ссылки catalog/name/page=1 и тд
вот как преобразовать
чтобы было catalog/name/1/
Автор: Tropin
Дата сообщения: 22.12.2004 10:28
xy

Цитата:
хм.. не работает

какой именно "хм" не работает? ;)


Цитата:
а можно еще, чтоб к урлу привязано небыло

читаем http://httpd.apache.org/docs-2.0/mod/mod_rewrite.html#rewriterule, судя по всему можно
Код: RewriteRule ^(.*)$ /РУ/$1 [R]
Автор: Vladroman
Дата сообщения: 26.01.2005 21:54
Меняю RewriteRule'ом запрос "page/" на "page.php", но возникает проблема с относительными путями на "page.php", то бишь рисунки, стили и пр. перестают загружаться. Подскажите, пожалуйста, как решить проблему без переписывания ссылок на странице.
Автор: xntx
Дата сообщения: 26.01.2005 23:40
Vladroman
добавь в хеад:
<base href='http://www.site.com/'>
у меня так работает
Автор: Vladroman
Дата сообщения: 27.01.2005 00:03
xntx
Добавить-то можно, но какое отношение это к рерайту-то имеет?
Автор: Tropin
Дата сообщения: 27.01.2005 09:21
Vladroman
xntx прав, обозреватель же думает, что в данный момент находится в папке /page/, ему пофиг, что скрипт выполняется в корне, собственно он и картинки ищет по относительному пути...
Я, например, просто использовал абсолютные, то есть /img/picture.png...
Автор: dacuan
Дата сообщения: 27.01.2005 18:18
Столкнулся с проблемой:
После преобразования mod_rewrite еще раз прогоняет полученый урл через все правила. При этом во всех правилах использую флаг [L], который, по ману, должен пресекать подобное поведение.
Кто-нибудь знает, как решить подобную проблему?
Версия апача 2.0.40
ОС: ASP Linux 9.0
Автор: Vladroman
Дата сообщения: 28.01.2005 13:04
Tropin
Прописал BASE - проблема решилась со всем, кроме форм. То бишь при отправке форма в упор не видит этот BASE, а считает относительный путь, исходя из текущего адреса. Можно как-нибудь исправить или пути для форм все-таки придется переписывать?
Автор: Tropin
Дата сообщения: 28.01.2005 13:53
Vladroman
Если честно, то понятия не имею... а есть сложность в переписывании путей?
Автор: Vladroman
Дата сообщения: 28.01.2005 14:32
Tropin, угу, больно много переписывать.
Автор: Tropin
Дата сообщения: 28.01.2005 15:03
Vladroman
Как вариант, можно для картинок тоже сделать rewrite, ну то есть обозреватель их запрашивает как page/img/picture.jpg, а сервер их трактует как просто как img/picture.jpg

Но минус такого подхода в снижении скорости, то есть урлы будут реврайтиться для каждой маломальской картинки.... потому лучше один раз самому (с использованием любых инструментов) поменять все ссылки, чем это будет тысячи раз делать сервер!
Автор: Vladroman
Дата сообщения: 28.01.2005 18:49
Tropin
С картинками и прочим я проблему решил с помощью "BASE" (спасибо xntx ), остались проблемы с формами и, похоже, с javascript. С первым все довольно определенно: обычная форма (типа той, что есть на этой странице для отправки сообщения) при методе "POST" не учитывает "BASE" и отправляет не на страницу site.com/lala.php, а на site.com/page/lala.php. Со скриптами вообще не понятно, то верно путь определяет, то нет. В принципе, я уже взялся за переписывание путей на абсолютные, но хочется просто разобраться, где собака порылась.
Автор: Tropin
Дата сообщения: 29.01.2005 14:27

Цитата:
просто разобраться, где собака порылась

а что ту непонятного? просто "BASE" работает не для всех тегов, а только для "A", ну и возможно еще каких-то типа "IMG" "LINK" и пр...
Я вообще никогда не работал с этим тегом, ибо на стадии проектирования выбираю какие ссылки будут относительными, а какие абсолютными и менять еще ни разу не приходилось ;)

Страницы: 1234567891011

Предыдущая тема: Защита от атак: выбор фаервола и антивируса для сисадмина


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.