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

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

 

Новый участник


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

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


Странно, у меня не подменяет, хотя без этого правила ru/page не находит(значит, правило действует как надо, но без подмены).
Проверяю в индексе явой(document.location.pathname) - так и присылает - без слеша
Где копать?

Отправлено: 17:34, 31-03-2010 | #151



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

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


Новый участник


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

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


как только открываю сайт в логах следующее
Код: Выделить весь код
10.10.0.188 - - [01/Apr/2010:16:14:46 +0500] [192.168.55.230/sid#9747bd8][rid#98e3508/initial] (1) [perdir /var/www/] pass through /var/www/ceramica/
10.10.0.188 - - [01/Apr/2010:16:14:46 +0500] [192.168.55.230/sid#9747bd8][rid#98f2540/subreq] (1) [perdir /var/www/] pass through /var/www/ceramica/index.php
10.10.0.188 - - [01/Apr/2010:16:14:46 +0500] [192.168.55.230/sid#9747bd8][rid#98f0538/initial] (1) [perdir /var/www/] pass through /var/www/ceramica/index.css
10.10.0.188 - - [01/Apr/2010:16:14:46 +0500] [192.168.55.230/sid#9747bd8][rid#98e5510/initial] (2) [perdir /var/www/] rewrite 'ceramica/img/copyright_back.jpg' -> '/index.php?page=img&lang=copyright_back.jpg'
10.10.0.188 - - [01/Apr/2010:16:14:46 +0500] [192.168.55.230/sid#9747bd8][rid#98e5510/initial] (2) [perdir /var/www/] trying to replace prefix /var/www/ with /
10.10.0.188 - - [01/Apr/2010:16:14:46 +0500] [192.168.55.230/sid#9747bd8][rid#98e5510/initial] (1) [perdir /var/www/] internal redirect with /index.php [INTERNAL REDIRECT]
10.10.0.188 - - [01/Apr/2010:16:14:46 +0500] [192.168.55.230/sid#9747bd8][rid#98eb918/initial/redir#1] (1) [perdir /var/www/] pass through /var/www/ceramica/index.php
10.10.0.188 - - [01/Apr/2010:16:14:46 +0500] [192.168.55.230/sid#9747bd8][rid#98ea520/initial] (2) [perdir /var/www/] rewrite 'ceramica/swf/home.swf' -> '/index.php?page=swf&lang=home.swf'
10.10.0.188 - - [01/Apr/2010:16:14:46 +0500] [192.168.55.230/sid#9747bd8][rid#98ea520/initial] (2) [perdir /var/www/] trying to replace prefix /var/www/ with /
10.10.0.188 - - [01/Apr/2010:16:14:46 +0500] [192.168.55.230/sid#9747bd8][rid#98ea520/initial] (1) [perdir /var/www/] internal redirect with /index.php [INTERNAL REDIRECT]
10.10.0.188 - - [01/Apr/2010:16:14:46 +0500] [192.168.55.230/sid#9747bd8][rid#98f1908/initial/redir#1] (1) [perdir /var/www/] pass through /var/www/ceramica/index.php
может че нить станет ясно???

-------
маздаи - must die


Отправлено: 11:21, 01-04-2010 | #152


Deadooshka


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

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


имхо RewriteBase у вас не '/', из-за этого проблемы.

Т.е. если htaccess лежит в корне, то попробуйте убрать RewriteBase. Правило мое возьмите (там проверка на наличие файла), а то у вас
Цитата total_abandon:
rewrite 'ceramica/swf/home.swf' -> '/index.php?page=swf〈=home.swf' »
запросы на реальные файлы изменяет...
Цитата total_abandon:
internal redirect with /index.php [INTERNAL REDIRECT] »
непонятные внутренние редиректы (из-за передних слешей)

Отправлено: 12:45, 01-04-2010 | #153


Новый участник


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

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


у меня "RewriteBase /", .htaccess лежит в /var/www a сам сайт в /var/www/ceramica. снял RewriteBase / - вообще стал не работать. .поставил настройки все как sham сказал, теперь сразу редиректит на 2 страницу и ненормально работает, то есть ссылки и тд не работают. вот логи.
Код: Выделить весь код
10.10.0.188 - - [01/Apr/2010:18:11:51 +0500] [192.168.55.230/sid#9747bd8][rid#98ec528/initial] (2) [perdir /var/www/] rewrite 'ceramica/' -> 'index.php?page=ceramica&lang='
10.10.0.188 - - [01/Apr/2010:18:11:51 +0500] [192.168.55.230/sid#9747bd8][rid#98ec528/initial] (2) [perdir /var/www/] trying to replace prefix /var/www/ with /
10.10.0.188 - - [01/Apr/2010:18:11:51 +0500] [192.168.55.230/sid#9747bd8][rid#98ec528/initial] (1) [perdir /var/www/] internal redirect with /index.php [INTERNAL REDIRECT]
10.10.0.188 - - [01/Apr/2010:18:11:51 +0500] [192.168.55.230/sid#9747bd8][rid#98f57b0/initial/redir#1] (1) [perdir /var/www/] pass through /var/www/ceramica/index.php
10.10.0.188 - - [01/Apr/2010:18:11:51 +0500] [192.168.55.230/sid#9747bd8][rid#98f4548/initial] (1) [perdir /var/www/] pass through /var/www/ceramica/img/titles/ceramica.gif
10.10.0.188 - - [01/Apr/2010:18:11:51 +0500] [192.168.55.230/sid#9747bd8][rid#98fa560/initial] (1) [perdir /var/www/] pass through /var/www/ceramica/swf/ef_ceramica.swf

-------
маздаи - must die


Отправлено: 13:17, 01-04-2010 | #154


Deadooshka


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

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


имхо у вас дб
Код: Выделить весь код
RewriteBase /ceramica
(если /var/www/ - document_root)
либо положите htaccess в ceramica
Цитата total_abandon:
поставил настройки все как sham сказал »
настройки лучше делать по мануалу...

Отправлено: 13:54, 01-04-2010 | #155


Новый участник


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

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


спасибо, стало работать, но не все, в ие-6,7, опера10, хроме - ок, а в мозилле че то не выводит флеши некоторые.
извините а что означает следующий лог?

Код: Выделить весь код
192.168.155.32 - - [02/Apr/2010:14:55:45 +0500] [192.168.55.230/sid#8634bd8][rid#87d0508/initial] (2) [perdir /var/www/ceramica/] rewrite 'partners/rus' -> 'index.php?page=partners&lang=rus'
192.168.155.32 - - [02/Apr/2010:14:55:45 +0500] [192.168.55.230/sid#8634bd8][rid#87d0508/initial] (2) [perdir /var/www/ceramica/] trying to replace prefix /var/www/ceramica/ with /
192.168.155.32 - - [02/Apr/2010:14:55:45 +0500] [192.168.55.230/sid#8634bd8][rid#87d0508/initial] (1) [perdir /var/www/ceramica/] internal redirect with /index.php [INTERNAL REDIRECT]
192.168.155.32 - - [02/Apr/2010:14:55:45 +0500] [192.168.55.230/sid#8634bd8][rid#87d38f8/initial/redir#1] (1) [perdir /var/www/ceramica/] pass through /var/www/ceramica/index.php

-------
маздаи - must die


Отправлено: 14:06, 02-04-2010 | #156


Новый участник


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

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


Доброго дня! Помогите пожалуйста с проблемой.
на сайте есть URL типа: /image/small/ki436j9j.jpg
Его нужно преобразовать к урлу: cache/image/small/{Первые два символа$1}/$1.jpg
А если такого файла нет то перенаправить на скрипт image.php

Пытаюсь сделать так:

RewriteRule ^image/small/([a-z0-9_]+).jpg(/?)+$ cache/image/small/{Здесь споткнулся((((}/$1.jpg [L]
RewriteRule ^image/(small|big|original|pda)/([a-z0-9_]+).(jpg|png|gif)(/?)+$ images.php?size=$1&name=$2&ext=$3 [L]


Может быть сможете помочь?

Отправлено: 08:09, 03-04-2010 | #157


Новый участник


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

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


Код: Выделить весь код
RewriteRule ^([A-Za-z]+)/([A-Za-z]+)/$ index.php?lang=$1&page=$2 [L]
RewriteRule ^([A-Za-z]+)/([A-Za-z]+)$ http://%{HTTP_HOST}/$1/$2/ [R,N]
RewriteRule ^([A-Za-z]+)$ http://%{HTTP_HOST}/$1/about/ [R]
RewriteRule ^([A-Za-z]+)/$ index.php?lang=$1&page=about [L]
RewriteRule ^$ http://%{HTTP_HOST}/ru/about/ [N]
Почему после введения "site.ru/" он примеряет на них все правила попорядку?
Разве этот запрос удовлетворяет первому правилу?
Код: Выделить весь код
127.0.0.1 - - [04/Apr/2010:12:19:45 +0700] [site/sid#87a6a8][rid#8d0d30/initial] (3) [perdir C:/Sites/home/site/www/] applying pattern '^([A-Za-z]+)/([A-Za-z]+)/$' to uri ''
Смысл - site/ заменять реальным site/ru/about/ и отправлять соответствующий запрос, site/ru заменять на site/ru/about/, ну и добавлять слеши где их нет в конце.
Заранее благодарен за помощь)

Последний раз редактировалось droZel, 04-04-2010 в 09:25.


Отправлено: 08:00, 04-04-2010 | #158


Deadooshka


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

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


Цитата kamaikin:
RewriteRule ^image/small/([a-z0-9_]+).jpg(/?)+$ cache/image/small/{Здесь споткнулся((((}/$1.jpg [L] »
Код: Выделить весь код
RewriteRule ^image/small/([a-z0-9_]{2})([a-z0-9_]+)\.jpg$ cache/image/small/$1/$2.jpg [L]
Цитата droZel:
[N] »
зачем флаг N?

Отправлено: 15:30, 04-04-2010 | #159


Новый участник


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

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


Цитата Sham:
Цитата kamaikin:
RewriteRule ^image/small/([a-z0-9_]+).jpg(/?)+$ cache/image/small/{Здесь споткнулся((((}/$1.jpg [L] »
Код:
RewriteRule ^image/small/([a-z0-9_]{2})([a-z0-9_]+)\.jpg$ cache/image/small/$1/$2.jpg [L]
Спасибо за первую часть решения, заработало вот так:
RewriteRule ^image/small/([a-z0-9_]{2})([a-z0-9_]+)\.jpg(/?)+$ cache/image/small/$1/$1$2.jpg
аостался второй вопрос если этого файла нет то должно выполняться перенаправление следующим образом
RewriteRule ^image/(small|big|original|pda)/([a-z0-9_]+).(jpg|png|gif)(/?)+$ images.php?size=$1&name=$2&ext=$3 [L]

Отправлено: 19:19, 04-04-2010 | #160



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




 
Переход