Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как пользоваться модулем mod_rewrite

Автор: Шенин Юрий
Сайт: www.web-coder.ru
13 июня 2006 года

Наверное, все из вас знают что такое интернет, сайт и Apache (веб-сервер). Немного углубившись в структуру веб-сервера скажу, что у апача есть еще и много модулей, которые обеспечивают работоспособность сайту. Сегодня вы узнаетечто за модуль mod_rewriter, что он делает и как его настраивать...

Скорее всего все вы, заходя на какой-нибудь сайт, видели ссылки типа - http://www.web-coder.ru/files/ или http://web-coder/states/state_553.html. Ну, с первым вариантом все просто скажете вы: в каталоге лежит файлик index.php и он загружается по умолчанию, вот поэтому адрес и имеет такой вид. Допутим, но что делать со вторым? Ведь врятли на крупном портале каждая статья будет редактироваться и вставляться в файл *.html рукаим? А как же скрипты на странице? Неужели настраивали весь сервер? Но это непрактично ?!

На самом деле страничка имеет вид такой - http://web-coder/module.php?area=state&numer=553. Вот этим и занимается модуль mod_rewriter. Он заменяет ссылки одного типа на другие. Его использование имеет много плюсов. Во-первых, повышается защита, т.к. хакер не знает о структуре вашего сайта и о запросах, которые посылает ваш скрипт. Во-вторых, получаются красивые и легко читаемые ссылки. В-третьих, некоторые поисковики легче индексируют такие ссылки. Сокращенно это называют ЧПУ (человеко-понятный URL). Итак, начнем менять ссылки вашего сайта...

Для начала в корневой папке вашего сайта должен находиться файл .htaccess. Если он уже есть хорошо, а если нет, то создайте.

В начале пишите:

RewriteEngine On

эта строка включает модуль

RewriteBase /

это ссылка на папку вашего сайта

Дальнейшие строки будут зависеть от структуры вашего сайта. Смотрите на пример:

RewriteRule ^catalog/dir([0-9]*)/ /module.php?section=catalog&area=dir&id=$1 

Вот эта строка - /module.php?section=catalog&area=dir&id=$1 - означает какой адрес нужно заменить. А вот эта - ^catalog/dir([0-9]*)/ - чем заменить. Заметьте в 1 строке в конце стоит переменная $1. Она означает любой набор символов, который должен находиться в этом месте и который будут заменять. Во 2 строке стоит запись - dir([0-9]*). Она означает, что будут заменяться все числа из 1 строки.

Понятно?? То есть, если в 1 строке заместо переменной будет стоять число, то 1 строка замениться 2 строкой с этим числом после слова dir. Если же в 1 строке будет слово, то ничего не заменится и не будет работать.

В моем примере я заменяю только числа, но вы можете менять и слова и слова с числами, но для этого вам придется писать более длинное регулярное выражение. Мой вам совет: когда можно, упрощайте вид ссылок. Не надо громоздить ссылки из 300 символов, чем ссылка меньше тем ее лучше запомнить.

Помните, что в самом скрипте вы можете принимать данные из строки запроса как будто там стоит 1 строка, но ссылаться должны на ссылки, имеющие вид 2 строки.

Если что-то непонятно, то заходите ко мне на сайт или пишите мне на email.

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
86K
02 ноября 2012 года
НЕСТЕРЕНКО Сергей Александрович
0 / / 02.11.2012
+4 / -0
Мне нравитсяМне не нравится
2 ноября 2012, 00:52:28
^catalog/dir([0-9]*)/ /module.php?section=catalog&area=dir&id=$1

Простите дилетатнта. Это код какого языка? РНР? По тексту вроде подразумевается, что читателю всё должно быть ясно с первого взгляда. Увы, не всем...
Так - по чьим правилам записано это регулярное выражение?
1.1.
4
01 октября 2002 года
mike
3.7K / / 01.10.2002
+1 / -0
Мне нравитсяМне не нравится
2 ноября 2012, 01:07:19
Это не язык, а конфигурационный файл Apache - .htaccess например.
2.
71K
15 апреля 2011 года
vital-viza
0 / / 15.04.2011
+14 / -5
Мне нравитсяМне не нравится
23 декабря 2011, 20:28:35
Как то мало, можно было бы и по подробнее
3.
63K
15 августа 2010 года
Романо
0 / / 15.08.2010
+8 / -19
Мне нравитсяМне не нравится
15 августа 2010, 17:55:37
Помогите!!!
у меня в файле .htaccess неверно
указаны mod_rewrite как исправить ошибку
4.
386
05 апреля 2005 года
newcss
297 / / 05.04.2005
+12 / -6
Мне нравитсяМне не нравится
15 июня 2007, 23:41:57
МалоВато! будет...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог