В самом начале знакомства с mod_rewrite для Apache многие делают пару распространённых ошибок, которые приводят к тому, что в .htaccess не работают директивы управляющие манипуляциями с URL при помощи mod_rewrite. Этих ошибок можно избежать, конечно, и при первом знакомстве с этим модулем, если внимательно прочитать документацию к Apache. Однако, редко кто (в том числе и я сам) читает внимательно документацию при первом знакомстве, с чем-либо.

Итак, первая ошибка, которая встречается — это установка директивы AllowOverride в httpd.conf для каталога хоста (виртуального хоста) не позволяющая использовать в .htaccess директивы для mod_rewrite. Например, может стоять AllowOverride None. Для использования mod_rewrite необходимо, по крайней мере, наличие флага FileInfo — AllowOverride FileInfo или если вы разрешаете переопределять все опции для каталога то AllowOverride All.

Пример:

<Directory "path/to/something">
	AllowOverride FileInfo ...
	...
</Directory>

или

<Directory "path/to/something">
	AllowOverride All
	...
</Directory>

Здесь в первом случае после флага FileInfo могут идти и другие флаги, после All не надо писать ничего другого.

И вторая простейшая ошибка — это отсутствие директивы RewriteEngine on перед директивами для mod_rewrite.

2002-08-28 18:17:47 UTC apache mod_rewrite web