Время для прочтения: 1 мин. 10 сек.

ЧПУ на mod_rewrite

ЧПУ (англ. Friendly URL) — веб-адреса, удобные для восприятия человеком (а также систем и методов построения таких адресов). Является аббревиатурой от словосочетания «человекопонятный урл» (где «урл» — жаргонное обозначение URL)

Без лишних вопросов создаем htaccess следующего содержимого:

# Задаем кодировку для типов text/plain или text/html.
# Лучше UTF-8, чтобы не было проблем с русскими УРЛами
AddDefaultCharset utf-8

# Если mod_charset есть на сервере
<IfModule mod_charset.c>
    # Отключаем перекодировку
    CharsetDisable On
    
    # Кодировка, в которой документы хранятся на диске
    CharsetSourceEnc utf-8
    
    # Кодировка по-умолчанию для данного сервера
    CharsetDefault utf-8
</IfModule>

# Позволяем следовать символическим ссылкам
Options +FollowSymLinks

# Если mod_rewrite есть на сервере
<IfModule mod_rewrite.c>

    # Включаем mod_rewrite
    RewriteEngine On

    # Задаём "базовую" директорию,
    # относительно которой идут все запросы
    RewriteBase /

    # Если запрашиваем реальная папка или файл
    # ничего не делаем, иначе "заворачиваем" все запросы
    # на index.php, который лежит в RewriteBase
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /index.php [L,QSA] 

</IfModule>

Главное требование — наличие mod_rewrite на сервере и возможность производить настройки в htaccess.

А уже в PHP разбираем переменную $_SERVER["REQUEST_URI"] на части:

// Получаем запрос, удаляя пробелы и слеши 
// в начале и конце строки
$request = trim($_SERVER["REQUEST_URI"], '/');

// Разбиваем запрос на части
$parts = explode('/', $request);

// Удаляем случайные пустые элементы, которые
// появляются, если, например, в запросе будет
// два слеша подряд (/news//04/01/1986/)
$parts = array_filter($parts, 'trim');

// Смотрим результат
print_r($parts);

В следующий раз поговорим о структуре базы данных сайта для ЧПУ, алиасах, роутерах.

Ссылки

Пошерить
Запинить
Отправить
Вотсап

Смотрите также

Предыдущая запись

Комментарии