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

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

 

Аватара для Artem-Samsung

Ветеран


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

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


В каком то из скриптов Wordpress, взял пример .htaccess для того что бы любой адрес, который обращается к веб-серверу обращался к файлу index.php

Код: Выделить весь код
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Но мне нужно вписать еще строку, типа:
Код: Выделить весь код
RewriteRule captcha.jpg /modules/captcha.php
Куда не втыкну, не получается.
Все равно все ссылается на index.php

Если вставить просто код:
Код: Выделить весь код
DirectoryIndex index.php
Options +FollowSymlinks
RewriteEngine On

RewriteRule captcha.jpg /modules/captcha.php
, то работает, но нужно еще сохранить ту настройку, что бы любой адрес обращался к одному файлу

-------
Мой блог Web Development


Отправлено: 03:35, 11-07-2010 | #171



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

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


Deadooshka


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

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


Цитата Artem-Samsung:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d »
третьим можно добавить
Код: Выделить весь код
RewriteCond %{REQUEST_URI} !captcha\.jpg
и свое потом куда угодно.
или сделайте файл captcha.jpg и положите куда надо (проверка идет на отсутствие файла и папки).
Это сообщение посчитали полезным следующие участники:

Отправлено: 04:37, 11-07-2010 | #172


Пользователь


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

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


Здравствуйте.
Есть сайт. Он доступен по двум адресам: один адрес - домен сайта , второй адрес - сервисный адрес сайта. Мне нужно чтобы при переходе на домен сайта, он его перенаправлял на сервисный адрес сайта, причем так чтобы, все что после домена сайта, переносилось на сервисный адрес сайта, например:
Код: Выделить весь код
www.site.com    redirect -->  www.service_address.com
www.site.com/home.html    redirect -->  www.service_address.com/home.html
www.site.com/css/style.css   redirect -->  www.service_address.com/css/style.css
первое что пришло в голову это на .htaccess следующей код:
Код: Выделить весь код
Options +FollowSymLinks
RewriteEngine On
RewriteRule (.*) http://www.service_address.com/$1 [R=301,L]
, но поскольку два адреса сайта работают с одной директории, то получается вечный редирект. Как это сделать(желательно с помощью .htaccess)?
Большое спасибо..

Отправлено: 20:05, 10-01-2011 | #173


Deadooshka


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

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


нужно условие добавить
Код: Выделить весь код
RewriteCond %{HTTP_HOST} ^(www\.)?site\.com$
RewriteRule ^(.*)$ http://www.service_address.com/$1 [R=301,L]
или так попробовать (чуть быстрее вроде)
Код: Выделить весь код
RewriteCond %{HTTP_HOST} ^(www\.)?site\.com$
RewriteRule .? http://www.service_address.com%{REQUEST_URI} [R=301,L]
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:29, 11-01-2011 | #174


Пользователь


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

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


Sham, большое спасибо!!
кстати, маленький вопрос, уже давно хотел знать на него ответ.
Обязательно ли перед точками ставить слеш
Цитата Sham:
^(www\.)?site\.com$ »
?
Часто в статьях или еще где-то перед точками стоит слеш, но когда я сам пишу правила, то их не ставлю, и вроде работает))
Только что удалил слеши из выше написанного примера, и тоже работает)

P.S. если вместо www, может быть любое значение, то писать так:
Код: Выделить весь код
RewriteCond %{HTTP_HOST} ^(.\.)?site\.com$
?
Спасибо.

Отправлено: 12:22, 11-01-2011 | #175


Deadooshka


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

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


Цитата maasja:
если вместо www, может быть любое значение »
Код: Выделить весь код
RewriteCond %{HTTP_HOST} site\.com$
. - любой символ, в т.ч. и точка, поэтому нужно экранировать. rtm.
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:37, 11-01-2011 | #176


Пользователь


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

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


Sham, как всегда большое спасибо)
Код: Выделить весь код
RewriteCond %{HTTP_HOST} site\.com$
код почему-то не работает, а так работает
Код: Выделить весь код
RewriteCond %{HTTP_HOST} .site\.com$
..

Отправлено: 13:33, 11-01-2011 | #177


Deadooshka


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

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


вопрос в содержимом %{HTTP_HOST}, куда смотрит регексп. Точка там ничего не решает, слева нет якоря на начало ^.

Последний раз редактировалось Sham, 12-01-2011 в 17:00. Причина: сено/солома


Отправлено: 12:48, 12-01-2011 | #178


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


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

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


Подскажите знающие, всю голову уже сломал...
Как сделать редирект с домена в РФ

Нужно, чтобы

домен.рф
domain.ru

перенаправлялись на: domain.ru/doc/

плюс желательно "doc" скрыть.

Последний раз редактировалось Sham, 16-01-2011 в 14:35. Причина: сайт_ру реальный сайт :)


Отправлено: 08:47, 16-01-2011 | #179


Deadooshka


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

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


не забудьте, что кириллические домены шлются в punycode (ссылка на конвертер внизу есть).

Отправлено: 14:31, 16-01-2011 | #180



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




 
Переход