Стало нужно на своем сервере сделать ЧПУ. Да пожалуйста, наслаждайтесь.Для начала в консоли нужно подключить сам модуль 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]
Ну, вот вроде бы и все…