Модуль apache mod_rewrite чаще всего применяется для подстановки фиктивного URL в CMS
Работает это следующим образом: с наружи сайта урл выглядит например так: http://rekoweb.ru/blog/id/66/ хотя на самом деле http://rekoweb.ru/cgi-bin/python/ffcms/blog.py?id=66 . Согласитесь, что первая запись выглядит более удобочитаемо для людей да и для машин-роботов. Этот трюк применяется сплошь и рядом, например в Wordpress, он позволяет не только сделать удобочитаемые урлы, но и скрыть технологию CMS сайта.
Для использования этой возможности в Ubuntu требуется apache2, админские права и немножко знаний REGEXP.
Приступим: для начала необходимо подключить модуль к apache:
sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/
перезапустить его
sudo apache2ctl restart
Затем приступаем к созданию виртуальных урлов, работать будем на примере этого блога и управлять модулем будет с помощью файла .htaccess. У меня он находится в папке ~/rekoweb.ru/www/.htaccess . В нём у меня имеют и другие опции делающие жизнь более приятной
~/rekoweb.ru/www]$ cat .htaccess
AddDefaultCharset UTF-8
RewriteEngine On
#RewriteBase /blog/
RewriteRule blog/([^/]+)/([^/]+) /cgi-bin/python/ffcms/blog.py?$1=$2 [L]
ErrorDocument 404 /index.shtm
AddDefaultCharset UTF-8 # принудительно включает установку кодировки в заголовках, так как мой хостер принудительно выставляет CP1251
# проверка, а подключен ли модуль mod_rewrite, если он не подлючен так как мы указали выше то код не будет выполняться
RewriteEngine On # включаем механизм перезаписи URL
# а вот тут самое главное, здесь с помощью REGEXP выбирается URL соответствующий: http://rekoweb.ru/blog/чтото1/чтото2
# при этом REGEXP выделяет переменные чтото1 и чтото2 которые затем подставляются в качестве параметров cgi скрипта
RewriteRule blog/([^/]+)/([^/]+) /cgi-bin/python/ffcms/blog.py?$1=$2 [L]
ErrorDocument 404 /index.shtml # а эта команда перебрасывает на главную страницу с любого неправильного URL (404 - не найден файл)
Для дополнения или оптимизации можно дорабатывать REGEXP. Например:
RewriteRule blog/(stat|id|m|q)/([^/]+) /cgi-bin/python/ffcms/blog.py?$1=$2 [L]
Под это правило подпадают уралы похожие на
http://rekoweb.ru/blog/m/7
http://rekoweb.ru/blog/q/vim
http://rekoweb.ru/blog/id/66
http://rekoweb.ru/blog/stat/day
Это позволяет уточнить и скрыть некоторые скрытые пременные или просто создать алиасы
Другие примеры использования mod_rewrite
Комментариев 0