четверг, 5 августа 2010 г.

Frendly URL в Apache

Итак, имеем простенький сайт (парочка статичных html-страниц). Нужно чтобы пользователи попадали на странички без указания расширения *.html. Это называется Frendly URL или человекопонятный URL.

То есть вместо
http://genmed.ath.cx/test.html
хотим
http://genmed.ath.cx/test



В апаче должен быть включен модуль rewrite:
/etc/apache2/mods-enables/rewrite.load
следующего содержания:
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so

Конфиг виртуального хоста выглядит следующим образом:

DocumentRoot /var/www/genmed
ServerName genmed.ath.cx
# DirectoryIndex index.html
<Directory "/var/www/genmed">
allow from all
AllowOverride All
Options +Indexes
#
RewriteEngine on
#
## Internally rewrite extensionless file requests to .html files ##
#
# If the requested URI does not contain a period in the final path-part
RewriteCond %{REQUEST_URI} !(\.[^./]+)$
# and if it does not exist as a directory
RewriteCond %{REQUEST_FILENAME} !-d
# and if it does not exist as a file
RewriteCond %{REQUEST_FILENAME} !-f
# then add .html to get the actual filename
RewriteRule (.*) /$1.html [L]
</Directory>

ЗЫ .htaccess я не использовал...
ЗЗЫ Если есть более элегантные решения - пишите. На мой взгляд это самый простой вариант, хотя может есть еще проще))

Комментариев нет: