Пример использование apache2 mod_rewrite в Ubuntu

Модуль 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

похожие страницы

  1. apache2 установка ssi(shtml) ubuntu 7.10, 8.04
  2. Защита от спамеров с помощью mod_rewrite
  3. Пример использования mod_rewrite
  4. Запуска apache в окружении chroot
  5. Ubuntu 8.04, Wine 1.1.19, WarCraft 3

#1:

Спасибо, у меня терь тоже заработало))

ответить  2009-07-11 13:08:57