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

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » mod_rewrite etc.

Ответить
Настройки темы
mod_rewrite etc.

Аватара для vadimiron

Ветеран


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


Конфигурация

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


Вот только недавно познакомился с этим замечательным модулем

Вот что я вынес из данного знакомства-с помощью mod_rewrite можно:
1) Самое распространённое использование-перезапись урлов, например есть урл index.php?forum=webmaster&topic=45
можно переписать в index.php/webmaster/45, что для некоторых поисковых машин намного более лучший вариант
2)запретить доступ к определённому файлу
RewriteRule ^file.ext$ - [F]
3)запретить доступ определённому браузеру, сборщику почты, доступ с определённого айпи или пришедшим с определённого сайта
RewriteCond %{HTTP_USER_AGENT} ^Browser_Name [OR]
RewriteCond % {REMOTE_HOST} ^www.badsite.com$ [OR]
RewriteCond % {REMOTE_ADDR} ^169.45.23.01$
RewriteRule ^.*$ - [F]

Это было самое распространённое применение данного модуля, но есть ещё много всяких интересных хитростей:
наприсер я недавно нашёл такое применение-при вызове страницы pic.html, нужно показывать картинку дня, поэтому можно переписать этот урл в pic-06-06.html c помощью серверных переменных TIME_MON и TIME_DAY
RewriteRule ^pic.html$ pic-%{TIME_MON}-%{TIME_DAY}.html

Или ещё кому нравится можно переписать файл index.php кому очень захочется в index.bmp

Если кто ещё знает интересные применения данного модуля, то постите тут

-------
Fortes fortuna adiuvat


Отправлено: 14:41, 06-06-2004

 

Deadooshka


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

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


E-mail где ты их берешь то?
Код: Выделить весь код
## .htaccess в каталоге /go
RewriteEngine On
RewriteOptions inherit
RewriteRule ^home\/?$ hotmepage.html
p.s. не понял, индекс при чем?

Отправлено: 03:57, 02-11-2006 | #81



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

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


Аватара для E-mail

Ветеран


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

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


Sham RewriteRule ^(.*)index\.html?(fmfmfkrk)?$ http://site.ru/$1

а как понимать конструкцию: ?()?

RewriteOptions inherit это я так понимаю заставляет обрабатываться первым файл htaccess тот что в корне, а затем тот что в папке go? или я чтото не понимаю в этом мире? а зачем он нам? о_О

Цитата:
-mail где ты их берешь то?
да взять то не проблема много чего надо, тренируюсь, и смотрю кто как решает еще тоже самое

-------
Основы HTML | Конференции


Отправлено: 00:47, 03-11-2006 | #82


Deadooshka


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

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


E-mail RTFM

Отправлено: 20:51, 03-11-2006 | #83


Аватара для E-mail

Ветеран


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

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


Sham не серьездный ответ для серьездного форума

-------
Основы HTML | Конференции


Отправлено: 02:45, 05-11-2006 | #84


Аватара для Siava one

Ветеран


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

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


Снова привет и снова вопросы, на этот раз их 2.
1. Как сделать чтобы при любых запросах типа www.сайт.ru, www.bla-bla-bla.сайт.ru, bla-bla-bla.сайт.ru, 123.qwerty.сайт.ru перенаправляло на http://сайт.ru?
Так будет корректно?
Код: Выделить весь код
RewriteCond %{HTTP_HOST}  ^(.*).сайт.ru$ [NC]
RewriteRule (.*) http://сайт.ru/$1 [R=permanent,L]
2. В .htaccess есть примерно такая блокировка от ссылок вида http://сайт.ru/any_page.php?url=http://сайт2.ru/...
Код: Выделить весь код
RewriteCond %{QUERY_STRING} ^(.*)=http://(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)=http\%3A\%2F\%2F(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)=ftp://(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)=ftp\%3A\%2F\%2F(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)=https://(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)=https\%3A\%2F\%2F(.*) [NC]
RewriteRule ^.* - [F,L]
А как разрешить такие ссылки для одного файла, например для http://сайт.ru/go.php?url=http://сайт2.ru/...

Спасибо

-------
Siava.ru


Отправлено: 12:01, 02-02-2007 | #85


Deadooshka


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

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


Siava one
1. а энти папки то есть или их нет, а ежели есть, то где? Никто же не знает (я в т.ч.), как у тебя субдомены прописаны... если нет, то редирект в конф. файле надо прописать..., а есть - в кажную папку - htaccess. Огласите весь спск пжалста
2. сверху свое правило пропиши (они сверху вниз выполняются)...

Отправлено: 13:43, 02-02-2007 | #86


Аватара для Siava one

Ветеран


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

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


Sham
1. Субдоменов нет, но наверно апач у меня сконфигурирован так, что с любым субдоменом заходит на один и тот же сайт.
2. Так какое своё правило? У меня его нет, вот и спрашиваю как оно должно выглядеть?


P.S.
С п.1 разобрался
Код: Выделить весь код
RewriteCond %{HTTP_HOST}  ^(.*).siava.ru$ [NC]
RewriteRule (.*) http://siava.ru/$1 [R=permanent,L]
п.2 пока под вопросом.

-------
Siava.ru


Последний раз редактировалось Siava one, 02-02-2007 в 20:19.


Отправлено: 15:25, 02-02-2007 | #87


Deadooshka


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

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


Siava one

1. дело хозяйское... но доп. инфа бы не помешала...
Код: Выделить весь код
RewriteCond %{THE_REQUEST} ^.+\.сайт\.ru.*$ [NC]
RewriteRule ^(.*)$ http://сайт.ru/$1 [R,L]
2. Пробуй этот вариантик (с учетом того, что у тебя было - лишнего много imho)
Код: Выделить весь код
RewriteCond %{QUERY_STRING} ^[^\=]+\=(https?|ftp).* [NC]
RewriteCond %{REQUEST_FILENAME} !^go\.php [NC]
RewriteRule .* - [F]
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:56, 02-02-2007 | #88


Аватара для Siava one

Ветеран


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

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


Sham
Спасибо разобрался кажется, сначала не заработало, а потом нашёл ошибку свою

P.S.
Хотя.. при использовании остальных строчек это условие перестаёт работать. То есть допускает использование ?url=... с любыми другими файлами.
Вот мои извращения:

Код: Выделить весь код
RewriteCond %{QUERY_STRING} ^[^\=]+\=(https?|ftp).* [NC]
RewriteCond %{REQUEST_FILENAME} !^forum\/go\/url\.php [NC]

# security settings
RewriteCond %{QUERY_STRING} ^(.*)wget\%20 [OR]
RewriteCond %{QUERY_STRING} ^(.*)fetch\%20 [OR]
RewriteCond %{QUERY_STRING} ^(.*)echr(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)rush=\%65\%63\%68 [OR]
RewriteCond %{QUERY_STRING} ^(.*)rush=echo [OR]
RewriteCond %{QUERY_STRING} ^(.*)esystem(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)passthru(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)\.printf\( [OR]
RewriteCond %{QUERY_STRING} ^(.*)cmd [OR]
RewriteCond %{QUERY_STRING} ^(.*)\%27(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)"(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)\%22(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)`(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)\%60(.*) [OR]
#RewriteCond %{QUERY_STRING} ^(.*)\%25(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)alert\(document(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)union(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)UNION(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)SQL_INJECTION(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)phpbb_root_path=(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)configdir(.*) [NC,OR]
RewriteCond %{QUERY_STRING} ^(.*)curl(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)lynx(.*) [OR]
RewriteCond %{QUERY_STRING} ^(.*)w3\%20(.*) [OR]
RewriteCond %{HTTP_COOKIE}% s:(.*):\%22test1\%22\%3b [OR]
RewriteCond %{QUERY_STRING} .*'.* [NC]
RewriteRule ^.* - [F,L]
Наверно уже запутал совсем попробую объяснить ситуацию.
Файл, для которого разрешены запросы вида file.php?url=http://site.ru/.. находится в каталоге /forum/go/url.php
Для всех остальных файлов такие запросы должны возвращать ошибку.

Последний раз редактировалось Siava one, 03-02-2007 в 00:57.


Отправлено: 23:54, 02-02-2007 | #89


Deadooshka


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

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


Siava one
нифигасе списочек... только я не понял security settings относятся к url=...?
вообще, тебе лучше все в виде одной регулярки оформить... большая получится, но будет производительнее намного... типа RewriteCond %{QUERY_STRING} (wget\%20|fetch\%20|echr|rush\=\%65\%63\%68|и т.д.)
Разберешься короче
Код: Выделить весь код
RewriteCond %{QUERY_STRING} ^url\=.* [NC]
RewriteCond %{REQUEST_FILENAME} !forum/go/url\.php [NC,OR]
# security settings
# .....
RewriteRule .* - [F]
Это сообщение посчитали полезным следующие участники:

Отправлено: 02:24, 03-02-2007 | #90



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » mod_rewrite etc.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Прочее - mod_rewrite .htaccess Wimpheling Общий по Linux 0 08-10-2013 14:57
Разное - Включение модуля mod_rewrite Lenivets1 Программирование и базы данных 5 13-02-2012 20:00
mod_rewrite Jaels Программное обеспечение Linux и FreeBSD 2 06-01-2012 12:09
mod_rewrite kishert Вебмастеру 3 10-03-2009 06:52
mod_rewrite PHANTOM777 Вебмастеру 1 20-07-2008 10:00




 
Переход