Верх страницы
Логотип Telegram
@Злой_Полицейский — авторский канал вашего покорного слуги в Telegram, где я пишу заметки о веб-разработке, программировании, PHP, инструментах и WordPress.
Обложка к записи ЧПУ на mod_rewrite
Время для прочтения: 0 мин. 4 сек.

ЧПУ на 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);

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

Ссылки

Автор: Кобзарёв Михаил

Суровый русский разработчик. Жил в Магадане, в офисе московских веб студий и в Тульской деревне. Виртуозно знает WordPress, PHP, ООП, Vue.js и вот это вот все.

Ведет блог о разработке, дайджест в телеграмме и в ВК.

Комментарии
Подписаться
Уведомить о
guest

2 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
Имя
Имя
8 лет назад

Развернули на части, а как эти части впихнуть в адресную строку ?

mihdan
8 лет назад
Ответить на  Имя

В чем заключается ваш вопрос? Какая задача перед вами стоит? Как вы пробовали ее решать, что получилось, что не получилось? Покажите примеры того, как вы решали вашу задачу. Спасибо за развернутый ответ )

PS: «Ничего не получается» — ответом не является

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

Михаил Кобзарёв (mihdan)

Авторский блог вашего покорного слуги в Telegram про web, программирование, алгоритмы, инструменты разработчика, WordPress, фильмы и сериалы