Пример настройки .htaccess для создания ЧПУ на php

Ниже приведен код файла .htaccess, который пригодится для создания понятных и простых ссылок на сайте. Чтобы не использовать GET запросы, и делать ссылки понятными и простыми.
Например вместо index.php?page=12&action=edit можно делать ссылки типа page/12/edit.

Пример кода файла htaccess для создания ЧПУ на php

AddDefaultCharset UTF-8

RewriteEngine On

#Don't favicon!
RewriteCond %{REQUEST_FILENAME} !^favicon\.ico

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

Разберем его по частям

Устанавливаем кодировку UTF-8. Не является обязательным в данном примере:
AddDefaultCharset UTF-8

Включаем движок mod_rewrite в Apache сервере:
RewriteEngine on

Костыль, чтобы не обрабатывать второй запрос который отправляют браузеры к фавиконке сайта:
#Don't favicon!
RewriteCond %{REQUEST_FILENAME} !^favicon\.ico

Условие. Указывает что все существующие папки не будут обрабатываться регулярным выражением:
RewriteCond %{REQUEST_FILENAME} !-d

Условие. Указывает что все существующие файлы не будут обрабатываться регулярным выражением:
RewriteCond %{REQUEST_FILENAME} !-f 

Условие. Проверяется существование этого пути и то что этот путь является символической ссылкой:
RewriteCond %{REQUEST_FILENAME} !-l

Регулярное выражение, в нашем случае — при любой строке запроса будет открывать index.php, добавляя её (строку запроса) в $_SERVER[‘REQUEST_URI’]:
RewriteRule ^(.*)$ index.php [L,QSA]

 

Ссылки по теме:

RewriteCond Директива модуля Mod rewrite

Ещё немного о mod_rewrite