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

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


нужно уточнить насчет последнего слеша, т.к. правило не предусматривает его наличие, поэтому если в конце адреса будет слеш, правило не сработает... (нужно добавить туда /?)

Отправлено: 15:05, 31-03-2010 | #141



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

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


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


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

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


Такс. Первая проблема решена, спасибо)
Теперь еще мелочь:
htaccess тот же
Код: Выделить весь код
RewriteEngine On
RewriteBase /
RewriteRule ^([A-Za-z]+)/?$ index.php?lang=$1 [L]
RewriteRule ^([A-Za-z]+)/([A-Za-z]+)/?$ index.php?lang=$1&page=$2
site.ru/ru/ отправляется отлично
site.ru/ru/page также, как и site.ru/ru/page/
а вот site.ru/ru отправляет, но в строке тут же меняет на "http://siberiaczar/ru/?lang=ru"

С чем бы это могло быть связано?

И еще, как сделать что о вроде редиректа, чтоб /ru/page автоматически менялось на /ru/page/

Отправлено: 15:49, 31-03-2010 | #142


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


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

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


Sham я не сказал что код нерабочий, смотри выше. я сказал что он у меня не работает и спросил о доп настройках которые могут помешать нормальной работе mod_rewrite- а, пожалуйста напишите что конкретно должно быть у меня в настройках апач, у меня стоит Lenny.

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


Отправлено: 16:06, 31-03-2010 | #143


Deadooshka


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

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


Цитата droZel:
И еще, как сделать что о вроде редиректа, чтоб /ru/page автоматически менялось на /ru/page/ »
Код: Выделить весь код
RewriteRule ^([A-Za-z]+)/([A-Za-z]+)$ http://%{HTTP_HOST}/$1/$2/ [L]
Цитата droZel:
а вот site.ru/ru отправляет, но в строке тут же меняет на "http://siberiaczar/ru/?lang=ru" »
это у вас где-то прописан редирект, в указанных правилах такое невозможно...

вообще, если например стоит nginx, то там мб свои правила прописаны, и апач тогда уже принимает измененный вариант. Т.ч. нужно смотреть комплексно, исходя из общей конфигурации...
Цитата total_abandon:
о доп настройках которые могут помешать нормальной работе mod_rewrite »
проверено на конфиге по умолчанию... смотрите настройки хоста в httpd.conf, правила в nginx, если есть..

Отправлено: 16:32, 31-03-2010 | #144


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


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

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


Цитата Sham:
RewriteRule ^([A-Za-z]+)/([A-Za-z]+)$ http://%{HTTP_HOST}/$1/$2/ [L] »
Перенаправляет, но не заменяет в строке...

Отправлено: 16:46, 31-03-2010 | #145


Deadooshka


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

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


оно перед всеми правилами должно стоять (внешний редирект)

Отправлено: 16:54, 31-03-2010 | #146


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


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

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


Цитата Sham:
оно перед всеми правилами должно стоять (внешний редирект) »
Перед какими? Там же [L] стоит? Разве это не значит, что после него ниче не станет выполняться?
Можно чуть подробнее?

Отправлено: 16:58, 31-03-2010 | #147


Deadooshka


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

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


Цитата droZel:
Там же [L] стоит? Разве это не значит, что после него ниче не станет выполняться? »
L - это внутренний флаг правила (хотя из мануала это не ясно, но опыт показывает). Т.е. L запрещает повторную перезапись внутри правила, и переход идет на следующее (исходя из других флагов).

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


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


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

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


ну хорошо. но ведь
Код: Выделить весь код
RewriteRule ^([A-Za-z]+)/([A-Za-z]+)$ http://%{HTTP_HOST}/$1/$2/ [L]
RewriteRule ^([A-Za-z]+)/([A-Za-z]+)/$ index.php?lang=$1&page=$2
не подменяет в строке /ru/page на /ru/page/, а всего лишь понимает их одинаково.
я мог бы сделать
Код: Выделить весь код
RewriteRule ^([A-Za-z]+)/([A-Za-z]+)/?$ index.php?lang=$1&page=$2
Разве это не тоже самое?
Мне нужна именно видимая подмена

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


Deadooshka


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

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


http:// - внешний редирект (по сути флаг R), т.е. браузеру шлется Location и обработка кончается - это и есть видимая подмена.

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



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




 
Переход