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

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


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

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


E-mail, ну я обновил свой пост с кодом... там подстановка %2 содержит все, что справа строки GET... да и с комментами я че-то начудил... , в общем разберешься... если чего не так, скажи...

Отправлено: 00:17, 18-08-2006 | #71



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

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


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

Ветеран


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

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


Цитата:
если чего не так, скажи...
Sham спасибо Вам большое дорогой Шам! Вы лутший, смотрите, всего несколько мелочей:

- две решотки в одной строчки для парсера конфига опасно серверу)
- зачем разбивать на два файла - для корня и рабочей директории?
- вот этот код вообще мне кажется излишен:
Код: Выделить весь код
RewriteEngine On
RewriteRule ^(k9|k10|k11)(.*)$ k3$2 [L]
- а вот тут к сожелению то, что справо от урла не будет работать как переменная со значением:
Код: Выделить весь код
RewriteCond %{QUERY_STRING} value\=5\&page\=([0-9\-\_]*)((\&.+)*)$
RewriteRule ^send\.php$ send.php?page=%1&value=97%2 [L]
кроме того, дефис в переменной page после обработки модулем может пропасть вместе с последующей цифрой и доллар не будет учитываться (лишние 2 байта)
- и еще, лишняя проверка на директорию:
Код: Выделить весь код
RewriteCond %{THE_REQUEST} \/k9\/
- если одна из переменных не передается и вовсе редирект также не будет реализован



Я реализовал это вот в таком виде:
Код: Выделить весь код
RewriteEngine On
#
#-------
#--- k9
#-------
RewriteCond %{QUERY_STRING} value\=1
RewriteCond %{QUERY_STRING} lang\=ru
RewriteCond %{QUERY_STRING} page\=([0-9]*)(\-|\_)([0-9]*)
RewriteRule ^k9/send.php$ k3/send.php\?value\=101\&page\=%1%2%3\&lang\=ru [L]
#
RewriteCond %{QUERY_STRING} value\=1
RewriteCond %{QUERY_STRING} page\=([0-9]*)(\-|\_)([0-9]*)
RewriteRule ^k9/send.php$ k3/send.php\?value\=101\&page\=%1%2%3 [L]
#
RewriteCond %{QUERY_STRING} value\=1
RewriteRule ^k9/send.php$ k3/send.php\?value\=101 [L]
#-------
#--- k10
#-------
RewriteCond %{QUERY_STRING} value\=1
RewriteCond %{QUERY_STRING} lang\=ru
RewriteCond %{QUERY_STRING} page\=([0-9]*)(\-|\_)([0-9]*)
RewriteRule ^k10/send.php$ k3/send.php\?value\=111\&page\=%1%2%3\&lang\=ru [L]
#
RewriteCond %{QUERY_STRING} value\=1
RewriteCond %{QUERY_STRING} page\=([0-9]*)(\-|\_)([0-9]*)
RewriteRule ^k10/send.php$ k3/send.php\?value\=111\&page\=%1%2%3 [L]
#
RewriteCond %{QUERY_STRING} value\=1
RewriteRule ^k10/send.php$ k3/send.php\?value\=111 [L]
считайте это проверкой и считайте, что Вы ее прошли

с огромным уважением!

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


Отправлено: 03:36, 18-08-2006 | #72


Deadooshka


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

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


E-mail
Цитата:
две решотки в одной строчки
да ладно... всю жисть так пишу, чем опасно то? Поделись инфой плз., может я чего не знаю...
Цитата:
зачем разбивать на два файла
так рациональнее, обычно в корне уже имеется htaccess, и заполнен под завязку. Поэтому ограничился только подменой мертвых каталогов на реальный. Еще заметь разницу в количестве кода
Цитата:
дефис в переменной page после обработки модулем может пропасть вместе с последующей цифрой и доллар не будет учитываться (лишние 2 байта)
а вот здесь подробнее, если можно куда пропадет дефиз? Какой доллар? Какие 2 байта? У меня там железно все... я пока не проверял, но обязательно это сделаю... Допускаю, что где-то доработать надо, но я на 99.9% уверен в своем коде.
Цитата:
лишняя проверка на директорию
Не разобрался! У меня лишнего ничего не бывает
Цитата:
если одна из переменных не передается и вовсе редирект также не будет реализован
какая переменная? какой редирект? Мы там редирект не делаем, а URL переписываем, это разные вещи. Про переменную подробнее пожалста...
Цитата:
считайте это проверкой и считайте, что Вы ее прошли
а это к чему? Прикол что-ли такой?

Все-таки думаю, ты не до конца разобрался в моем коде... у меня гораздо компактнее и рациональнее. Но как говорится - хозяин-барин...

Отправлено: 05:35, 18-08-2006 | #73


Аватара для benya

Старожил


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

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


Господа а Apache 1.3.7 не поддерживает комбинаций типа \w{2}? В смысле нормальных регулярных выражений?

Отправлено: 11:37, 15-09-2006 | #74


Deadooshka


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

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


benya, Только POSIX-регулярки...

Отправлено: 03:54, 16-09-2006 | #75


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

Ветеран


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

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


а как сделать редирект

с site.ru/index.html на site.ru

с site.ru/index.htmlfmfmfkrk на site.ru

и с site.ru/все_что_угодно.htmldfklj на site.ru/все_что_угодно.html

и с site.ru/все_что_угодно.htmdfklj на site.ru/все_что_угодно.htm

и желательно по компактней?

поможите..

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


Отправлено: 20:45, 30-10-2006 | #76


Deadooshka


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

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


E-mail
Код: Выделить весь код
RewriteEngine On
RewriteRule ^(.*)index\.html?(fmfmfkrk)?$ http://site.ru/$1
RewriteRule ^(.+)\.(html?)dfklj$ $1.$2

Последний раз редактировалось Sham, 31-10-2006 в 03:29.


Отправлено: 22:37, 30-10-2006 | #77


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

Ветеран


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

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


Sham что прости заменить?

эм, а с директориями третьего и т.д. уровня такжеработает?

site.ru/ttt/index.html на site.ru/ttt/ ?

и еще как быть с htm и как учесть чтобы запросы ? и # не терялись?...

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


Отправлено: 00:54, 31-10-2006 | #78


Deadooshka


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

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


E-mail обновил, должно работать.
Цитата:
запросы ? и # не терялись
не теряются никуда
Цитата:
что прости заменить?
в первом правиле http://site.ru/$1 на $1index.php т.е. index.php это индексный файл в твоих директориях (или как у тебя там, не знаю). Это чтобы внешний редирект не делать, т.е. через header... (через юзера). А если так оставить, то если сработает первое правило, на браузер будет header посылаться (типа сайт переехал). Популярно объяснил? теперь проверяй.


Отправлено: 03:49, 31-10-2006 | #79


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

Ветеран


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

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


Sham запрос редиректил на документ рут)

другой вопрос как сделать редирект чтобы с запросов вида:

site.ru/go/home редиректило на site.ru/go/hotmepage.html

и с

site.ru/go/home/ редиректило на site.ru/go/hotmepage.html

?

при этом индекс по умолчанию index.php

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


Отправлено: 23:09, 01-11-2006 | #80



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




 
Переход