Переместить содержимое .htaccess на виртуальный хостинг, для повышения производительности

#.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?