apache-logo
Время для прочтения: 1 мин. 3 сек.

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

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

Ссылки

Для вставки кода используйте HTML-теги
<pre><code class="php">ваш код</code></pre>

Добавить комментарий

Такой e-mail уже зарегистрирован. Воспользуйтесь формой входа или введите другой.

Вы ввели некорректные логин или пароль

Извините, для комментирования необходимо войти.

2 комментария

по хронологии
по рейтингу сначала новые по хронологии

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

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

PS: "Ничего не получается" - ответом не является