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

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


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

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


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

Отправлено: 16:02, 30-03-2010 | #131



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

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


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


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

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


может нужны какие то доп. настройк чтоб твой код работал у меня?? у меня апач 2.2.9

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


Отправлено: 16:05, 30-03-2010 | #132


Deadooshka


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

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


Цитата total_abandon:
а что index.php ?? »
в смысле, как скрипт определяет пустые GET-переменные (isset/empty). В том случае isset - true, и empty - true (переменная существует, но пустая), а если с двумя правилами, то isset - false, а empty - true (мб переменной не существовать в одном правиле)... т.е. если везде empty, то надежнее...

Цитата total_abandon:
нужны какие то доп. настройк чтоб твой код работал у меня?? »
никаких

вот .htaccess

Код: Выделить весь код
Options +FollowSymLinks
RewriteOptions MaxRedirects=3

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(([^\/]+)\/)?([^\/]+)$ index.php?page=$2&lang=$3 [L]

Отправлено: 16:12, 30-03-2010 | #133


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


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

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


нет у меня типа этого. -
Код: Выделить весь код
$page = $_GET['page'];
if(page == "products")
{
...
}

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


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


Deadooshka


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

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


Цитата total_abandon:
if(page == "products") »
$page (ошибочка)

если $_GET['page'] не существует, то будет e_notice. Нужно проверять наличие (empty/isset).

хотя можно и заткнуть (@$_GET['page'])

Отправлено: 17:45, 30-03-2010 | #135


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


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

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


Здравствуйте. Уже третий день парюсь, ничего не могу поделать.
Делаю ЧПУ с помощью mod_rewrite.
Мне нужно, чтобы ссылки site.ru/ru/page ссылались на index.php?lang=ru&page=page
При отсутствии последней переменной пусть посылается только одна.

.htaccess:

Код: Выделить весь код
DirectoryIndex /ru/
 
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 [L]
все хорошо, переменные присылаются, но также подменяются и папки, тоесть при запросе site.ru/ru/about/

мы какбы находимся в папке ru/about.
Со всеми вытекающими: не находит страницы и стили.
Заранее благодарен)

Отправлено: 18:39, 30-03-2010 | #136


Deadooshka


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

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


можно добавить проверку на наличие файла (или другие условия),

Код: Выделить весь код
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([A-Za-z]+)(/([A-Za-z]+))?/?$ index.php?lang=$1&page=$3 [L]
или конкретно определить возможные псевдо-папки

Код: Выделить весь код
RewriteRule ^(ru|en)/?$ index.php?lang=$1 [L]
RewriteRule ^(ru|en)/(page|other)/?$ index.php?lang=$1&page=$2 [L]

Отправлено: 19:39, 30-03-2010 | #137


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


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

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


Ну это все варианты варианты, но меня мучает один вопрос.
Почему /ru/page1/ он пересылает в файл, но ../ для него становится этими папками?

Отправлено: 04:57, 31-03-2010 | #138


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


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

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


у меня вообще не работает код sham-а, только работает указанный мною, все эты скобки, квадратные круглые все это не работает. мне нужно чтоб нормально работали эти два правила вместе... но никак .... одно правило со всем справляется тока когда меняешь язык и остается одна переменная GET выдает что не найденна такая папка на сервере... посоветуйте что нибудь все перепробовал.

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


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


Deadooshka


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

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


Цитата droZel:
Почему /ru/page1/ он пересылает в файл, но ../ для него становится этими папками? »
если вопрос об относительных ссылках на css, скрипты и картинки, то безусловно они не будут работать, поскольку для браузера это директории, хоть и псевдо. Поэтому все относительные ссылки надо заменить на корневые, с передним слешем... <script src="/file.js">

Цитата total_abandon:
у меня вообще не работает код sham-а, только работает указанный мною, все эты скобки, квадратные круглые все это не работает. »
читайте логи сервера, смотрите настройки, мб у вас htaccess вообще запрещены, а работают правила, прописанные в конфиге... у DirectoryIndex непонятное значение...

Если код не работает у вас, это не значит, что он неправильный.

Отправлено: 14:47, 31-03-2010 | #140



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




 
Переход