|
Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » mod_rewrite etc. |
|
mod_rewrite etc.
|
![]() Ветеран Сообщения: 1864 |
Вот только недавно познакомился с этим замечательным модулем
Вот что я вынес из данного знакомства-с помощью 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 кому очень захочется ![]() Если кто ещё знает интересные применения данного модуля, то постите тут |
|
------- Отправлено: 14:41, 06-06-2004 |
Deadooshka Сообщения: 2517
|
Профиль | Отправить PM | Цитировать вариантов можно кучу найти..
например, добавлять пустой параметр к урлу при срабатывании правила, а в случае редиректа проверять его отсутствие. RewriteCond %{QUERY_STRING} pid\=107983 RewriteCond %{QUERY_STRING} !fortest\=1 RewriteRule index.php http://mysite.com/Kategorija_1/page_1.html? [R=301,L] RewriteRule ^Kategorija_1/page_1.html$ index.php?pid=107983&fortest=1 [NC, QSA, L] 1) правило последнее, и окончательный выход из всех правил; 2) только один цикл в самом правиле (а без флага L одно правило будет переписывать урл до тех пор, пока не будет совпадения). опыт показывает, что утверждение 2 вернее... |
Отправлено: 21:45, 24-07-2009 | #111 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 1
|
Профиль | Отправить PM | Цитировать Всем привет!
Вопрос следующий. Проблема переадресации с помощью mod_rewrite. имеется исходный url, например: такой http://www.example.com/index.php >хочется получить такой > http://www.example.com/ или http://www.example.com/index.php?page10 >хочется получить такой > http://www.example.com/page10 или такой http://www.example.com/index.php?xxx=yyyy&zzzz=wwww >хочется получить такой > http://www.example.com/xxx/yyyy/zzzz/wwww или на худой конец такие: http://www.example.com#xxx#yyyy#zzzz#wwww Попытки решения: 1. RewriteEngine on RewriteBase / RewriteCond %{SCRIPT_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule ^(.*)$ index.php?$1 преобразует http://www.example.com/xxx=yyyy&zzzz=wwww в http://www.example.com/index.php?xxx=yyyy&zzzz=wwww Просто убирает индексный файл и знак вопроса из URL. 2. Второй способ не работает: RewriteEngine on RewriteBase / RewriteCond %{SCRIPT_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} !-d RewriteCond %{REQUEST_URI} [A-Za-z0-9]* RewriteRule ^([A-Za-z0-9]*)$ index.php?$1 RewriteCond %{SCRIPT_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} !-d RewriteCond %{REQUEST_URI} [A-Za-z0-9]*#[A-Za-z0-9]* RewriteRule ^([A-Za-z0-9]*)#?([A-Za-z0-9]*)$ index.php?$1=$2 RewriteCond %{SCRIPT_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} !-d RewriteCond %{THE_REQUEST} [A-Za-z0-9]*#[A-Za-z0-9]*#[A-Za-z0-9]* RewriteRule ^([A-Za-z0-9]*)#([A-Za-z0-9]*)#([A-Za-z0-9]*)$ index.php?$1=$2&$3 RewriteCond %{SCRIPT_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} !-d RewriteCond %{THE_REQUEST} [A-Za-z0-9]*#[A-Za-z0-9]*#[A-Za-z0-9]*#[A-Za-z0-9]* RewriteRule ^([A-Za-z0-9]*)#?([A-Za-z0-9]*)#?([A-Za-z0-9]*)#?([A-Za-z0-9]*)$ index.php?$1=$2&$3=$4 Не совсем понятно как сравнивать RewriteCond почему в данном примере сравнение не работает 3. Были и другие эксперименты но пока радостного мало ================================================================== Основные сложности в том, что длинна адреса может меняться т.е. от http://www.example.com/ до http://www.example.com/index.php?xxx=yyyy&zzzz=wwww (http://www.example.com/xxx/yyyy/zzzz/wwww) и еще при использовании адресов типа http://www.example.com/xxx/yyyy/zzzz/wwww браузер запрашивает файлы (css, img ...) при указании относительного адреса с базой для URL http://www.example.com/xxx/yyyy/zzzz/wwww соотвественно http://www.example.com/xxx/yyyy/zzzz/ как лучше решить эту проблему в случае использования '/', можно использовать '#' но это не совсем то что надо. Может знает стандартное решение данного вопроса. Буду благодарен, подскажите. Благодарю за внимание!!! |
Отправлено: 13:57, 29-07-2009 | #112 |
Deadooshka Сообщения: 2517
|
Профиль | Отправить PM | Цитировать Цитата User2010:
Цитата User2010:
Цитата User2010:
Цитата User2010:
Цитата User2010:
|
|||||
Отправлено: 03:34, 30-07-2009 | #113 |
Пользователь Сообщения: 118
|
Профиль | Отправить PM | Цитировать Привет всем. Пожалуйста помогите наладить перенаправление?
Перенесли сайт с тестового домена new.site.ru на основной домен _www.site.ru И нужно сделать так, чтобы при обращении к тестовому домену (допустим с поисковиков) срабатывало перенаправление на основной домен. К примеру, запрошена страница Цитата:
Цитата:
Цитата:
Ничего не происходит. Что не так? |
|||
Последний раз редактировалось Sham, 29-09-2009 в 13:08. Причина: прямые ссылки не надо Отправлено: 08:39, 29-09-2009 | #114 |
Deadooshka Сообщения: 2517
|
Профиль | Отправить PM | Цитировать последняя строка
передний слеш, если правило в контексте сервера (в httpd.conf), в .htaccess отсекается... Цитата d0ublezer0:
в итоге (с соблюдением регистров) |
|
Последний раз редактировалось Sham, 29-09-2009 в 16:06. Причина: + Отправлено: 13:15, 29-09-2009 | #115 |
Пользователь Сообщения: 118
|
Профиль | Отправить PM | Цитировать Sham, спасибо огромное.
Тогда еще вопрос - а если страница на новом сайте не существует, то как перенаправить на главную? |
Отправлено: 15:24, 29-09-2009 | #116 |
Deadooshka Сообщения: 2517
|
Профиль | Отправить PM | Цитировать |
Отправлено: 16:08, 29-09-2009 | #117 |
Пользователь Сообщения: 118
|
Профиль | Отправить PM | Цитировать Пожалуйста помогите с такой задачей:
посл перенастройки SEF модуля на сайте поменялись все ссылки. А по поисковым сисмемам народ приходит на "старые адреса". нужно поправить переход. Например придя по любой из ссылок: http://example.com/vmchk/musornyie-konteyneryi/ http://example.com/vmchk/musornyie-konteyneryi/view-all-products.html И тоже самое для WWW в начале адреса. Т.е. убрать из строки vmchk/ и заменить последний слеш на .html Спасибо. |
Последний раз редактировалось Sham, 26-11-2009 в 20:43. Причина: example.com! Отправлено: 13:59, 26-11-2009 | #118 |
Deadooshka Сообщения: 2517
|
Профиль | Отправить PM | Цитировать |
Отправлено: 20:52, 26-11-2009 | #119 |
Пользователь Сообщения: 118
|
Профиль | Отправить PM | Цитировать Sham, спасибо, только вот еще задача - некоторые ссылки уже имеют html в конце:
/vmchk/plastikovyie-bochki-i-bidonyi.html И получается что по вашему правилу для них формируется два расширения .html Как переделать? |
Отправлено: 14:21, 30-11-2009 | #120 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Прочее - 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 |
|