Как пользоваться модулем mod_rewrite
Наверное, все из вас знают что такое интернет, сайт и 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.
Оставить комментарий
Комментарии
Простите дилетатнта. Это код какого языка? РНР? По тексту вроде подразумевается, что читателю всё должно быть ясно с первого взгляда. Увы, не всем...
Так - по чьим правилам записано это регулярное выражение?
у меня в файле .htaccess неверно
указаны mod_rewrite как исправить ошибку