#.htaccess #apache2 #vhosts
#.htaccess #apache2 #виртуальные хосты
Вопрос:
Мне было интересно, можно ли повысить производительность, если переместить содержимое файла .htaccess в файл vhost apache2?
Это содержимое моего .htaccess
Options FollowSymLinks ExecCGI
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_NAME} ^([^.] .[^.] )$ [NC]
RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]
# we check if the .html version is here (caching)
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.] )$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
# no, so we redirect to our front web controller
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
Если это хорошая идея, куда в объявлении vhost мне следует поместить содержимое выше?
Спасибо!
Ответ №1:
Если у вас есть возможность редактировать файлы конфигурации vhost, вы всегда должны это делать. .htaccess интерпретируется с каждым отдельным запросом, который отправляется на ваш сайт, в то время как, с другой стороны, vhost.conf интерпретируется только при перезапуске / перезагрузке httpd.
Вы могли бы установить Options
директиву in Directory- например:
<Directory /usr/local/apache2/htdocs/somedir>
Options FollowSymLinks ExecCGI
</Directory>
<VirtualHost [...]>
[...]
RewriteEngine On
RewriteCond %{SERVER_NAME} ^([^.] .[^.] )$ [NC]
RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]
# we check if the .html version is here (caching)
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.] )$ $1.html [QSA]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
# no, so we redirect to our front web controller
RewriteRule ^(.*)$ index.php [QSA,L]
</VirtualHost>
Также взгляните на этот wikipost на apache.org — особенно раздел, когда я должен и не должен использовать файлы .htaccess?