Механизм перезаписи является многопроходным. Он циклически выбирает самый низкий файл .htaccess
на пути с RewriteEngine On
до тех пор, пока не произойдет никаких изменений перезаписи. Таким образом, для этого запроса example.com/folder/xxx
- если файл .htaccess
существует в DOCROOT/folder
, он будет использоваться, а правила перезаписи в DOCROOT/.htaccess
будут игнорироваться .
Вы можете использовать один .htaccess
в DOCROOT или иерархии. Один файл DOCROOT .htaccess
имеет небольшое преимущество в производительности, так как движку нужно только открывать и читать в одном файле .htaccess
. Я опишу это более подробно в этой статье, Подробнее об использовании правил перезаписи в файлах .htaccess
Вы не указываете RewriteBase
, и поэтому движок может часто терять каталоги, как здесь, в вашем случае. Поэтому я бы использовал следующее в DOCROOT/.htaccess
:
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} =example.com
RewriteRule ^.* http://www.example.com/$0 [R=301,L]
где DOCROOT - корневой каталог вашего документа Apache.
Мне также любопытно, что вы включили набор символов для шаблона даты. Мне кажется странным, но если оставить это в стороне, лучше записать как
RewriteRule ^([-_!~*'()$\w]+)/?$ date/index.php?action=$1 [L,QSA]
при условии, конечно, что вы хотите активировать DOCROOT / date / index.php