Настраиваем mod_rewrite (ЧПУ) в Apache2 под Ubuntu

Стало нужно на своем сервере сделать ЧПУ. Да пожалуйста, наслаждайтесь.Для начала в консоли нужно подключить сам модуль rewrite:

sudo a2enmod rewrite

К слову — кроме a2enmod (подключить модуль к Apache2) есть еще команды:

  • a2enmod (подключить модуль к Apache2)
  • a2dismod (отключить модуль)
  • a2ensite (подключить сайт)
  • a2dissite (отключить сайт)

По сути, все они работают с символическими ссылками (команда ln), но ИМХО так удобнее.

Ну, модуль подключили, теперь надо отредактировать конфигурации всех хостов (на примере хоста site):

sudo nano /etc/apache2/sites-available/site

заменив AllowOverride None на AllowOverride All

То есть, если у нас есть в папке /etc/apache2/sites-available какие-то файлы — это и есть наши хосты (подробнее об этом напишу в следующей статье).

Собственно, все. Теперь перезагружаем apache2

sudo /etc/init.d/apache2 reload

и радуемся человечьим урлам. Кстати, вместо reload можно использовать restart. Разница в том, что при reload вебсервер просто перечитывает конфиг, а при restart — перезагружется весь, так что если апач не нагружен пользователями, ожно использовать второй вариант.

Теперь остается только сделать человекоурлы в .htaccess. Например для MODx можно сделать так:

php_flag register_globals Off
AddDefaultCharset utf-8
php_value date.timezone Europe/Moscow

Options +FollowSymlinks
RewriteEngine On
RewriteBase /

# Fix Apache internal dummy connections from breaking [(site_url)] cache
RewriteCond %{HTTP_USER_AGENT} ^.*internal\ dummy\ connection.*$ [NC]
RewriteRule .* - [F,L]

# Rewrite domain.com -> www.domain.com -- used with SEO Strict URLs plugin
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^mysite\.ru [NC]
RewriteRule (.*) http://mysite.ru/$1 [R=301,L]

# Exclude /assets and /manager directories and images from rewrite rules
RewriteRule ^(manager|assets)/*$ - [L]
RewriteRule \.(jpg|jpeg|png|gif|ico)$ - [L]

# For Friendly URLs
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

Ну, вот вроде бы и все…

0

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