Консультация № 161217
23.02.2009, 20:10
0.00 руб.
0 2 1
Вечер добрый!
На многих сайтах вижу имитацию папок, например: http://site.od.ua/param/2/id/5
Как я понимаю, это недалеко от http://site.od.ua/param=2... Точно не уверен.
Как это делается? Выглядит красивее.

Обсуждение

Неизвестный
23.02.2009, 20:18
общий
Это делается с помощью Apache Mod_rewrite
Удачи!
Неизвестный
23.02.2009, 20:27
общий
это ответ
Здравствуйте, Прим Палвер!
ЧПУ (англ. Friendly URL) — веб-адреса, удобные для восприятия человеком (а также систем и методов построения таких адресов). Является аббревиатурой от словосочетания «Человеку Понятный Урл» («урл» — жаргонное для URL).

Концепция ЧПУ предполагает максимально лаконичные и интуитивно понятные адреса, которые показывают естественную для человека логическую структуру данных на сервере, а не её программный интерфейс с модулями и параметрами. Структуру обычно представляют в виде иерархии как в обычной файловой системе, к которой привык пользователь.

Реализация
Для веб-сервера Apache существует мощный модуль mod_rewrite, который включается в стандартный дистрибутив. Он обладает массой возможностей интерпретации URL перед обработкой необходимым модулем.

В большинстве случае в файле .htaccess указывается с помощью регулярного выражения формат URL, который должен быть обработан как другой URL. Например:
Код:

RewriteEngine on
RewriteRule article/(\d+)/? article.php?id=$1 [L]

Первая строчка включает mod_rewrite. Во второй указывается, что веб-сервер при запросе URL вида /article/450/ должен обратиться к /article.php?id=450 .

Обработка URL в собственном скрипте
Разработчик может вручную обработать URL и на основе него вызвать какую-то функцию. Для этого, чаще всего, нужно с помощью mod_rewrite направить все запросы одному скрипту для обработки. Для этого нужно добавить в файл .htaccess следующее содержимое:
Код:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]

Скрипт index.php уже будет брать URL из переменной $_SERVER['REQUEST_URI'] и на основе каких-то настроек запускать необходимый код.

Приложение:
http://www.artlebedev.ru/kovodstvo/sections/48/
http://www.artlebedev.ru/kovodstvo/sections/49/
http://spectator.ru/technology/php/user_friendly_urls
http://apachedev.ru/2006/07/31/mod_rewrite-preobrazovanie-dinamicheskih-url-v-staticheskie/
http://sitemaker.ru/technologies/webserver/mod_rewrite/
Форма ответа