Що таке чпу (sef)

Переваги для користувача очевидні:

Для веб-сервера 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%! -f
RewriteCond%! -d
RewriteRule ^ (. *) $ Index.php [L, QSA]

Скрипт index.php вже буде брати URL з змінної REQUEST_URI (в PHP з $ _SERVER [ 'REQUEST_URI']) і на основі якихось налаштувань запускати необхідний код.

У більшості інструментаріїв для створення сайту, таких як Django або Ruby on Rails, веб-сервер не звертається безпосередньо до скрипту через URL (як, наприклад, в чистому PHP), а в спеціальному файлі вказується зв'язок потрібного методу для виведення сторінки з шаблоном URL .

Для завдання шаблону URL використовується або регулярні вирази, або спеціальна мова.

Наприклад, в RubyOnRails:
ActionController :: Routing :: Routes.draw do | map |
map.connect 'users'. controller => 'user'. action => 'list'
map.connect 'users /: id'. controller => 'user'. action => 'show'
end

У деяких веб інструментаріях (наприклад, Ramaze або Merb, написаних на Ruby) зв'язок URL і методу класу визначається назвою та кількістю аргументів методу.