CMS своими руками. mod_rewrite. ЧПУ на сайте

Дата: Август 27, 2009

(1) комментарий

Практически в каждом современном движке есть поддержка так называемой технологии ЧПУ.
ЧПУ или как на английском SEF расшифровывается, как «числово програмное управление», английский аналог несколько отличается «search engine friendly». Иногда встречается не коректрася расшифровка как «человекопонятный урл», но этот перевод отражает только смысл.
Ниже на простом примере я хочу показать как использовать этот самый мод

А использовать его следующим образом:
создаём на сервере файл .htaccess (если он ещё не создан) и дописываем в него следующие строки

1
2
3
4
5
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
#Замена ссылок на страницы
RewriteRule ^(.*)/(.*)/$ index.php?modul

если уже нечто подобное есть не страшно, допишите ещё… это будет дополнительное правило.
создайте файл index.php с таким текстом:

1
2
<?php
print_r($_GET);

теперь если вы напишете урл вида sitename.ru/news/1/ то вам скрипт выдаст следующее:
Array ( [module] => news [id] => 1 )
тоесть GET параметр $_GET[module] будет равен = news , а $_GET[id] = 1
А теперь немного о том как это всё работает

RewriteEngine On — говорит о том, что мы включаем mod_rewrite
RewriteBase / — говорит точку от которой начинать монтировать урлы
RewriteRule ^(.*)/(.*)/$ index.php?module=$1&id=$2 — это правило монтирования, оно и отвечает за преобразования урлов

обратите внимание, данное правило разбито на 2 части, а именно ^(.*)/(.*)/$ и index.php?module=$1&id=$2
первая часть это обычное rejex выражение, какое вы скорее всего уже раньше использовали например в preg_replace. Оно определяет какие части урла выбираются, а именно выбирается часть урла по селектору (.*). Каждый такой селектор имеет свой индекс (номер по порядку) по значению которого можно вывести результат. Так например для первого (.*) результат будет присвоен в $1 для второго (.*) в $2, для третего (.*) в $3 и т.д.

a




    Один комментарий на "CMS своими руками. mod_rewrite. ЧПУ на сайте"

    ssl2 сказал:
    04.06.2010

    не экранирован слеш

    RewriteRule ^(.*)\/(.*)$ index.php?module=$1&id=$2

    Продолжение дискуссии на форуме: link


    Вы можете продолжить обсуждение этой статьи на форуме


    Имя : 
    Почта : 
    Сайт : 
    Комментарий : 

    Проверка комментариев включена. Прежде чем Ваши комментарии будут опубликованы пройдет какое-то время.

    Создание сайта - Echo-group Раскрутка сайтов