Переместите .htaccess контент в vhost, для производительности - PullRequest
16 голосов
/ 22 мая 2011

Мне было интересно, можно ли повысить производительность, если я переместу содержимое файла .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 Ответ

12 голосов
/ 04 марта 2012

Если у вас есть возможность редактировать файлы конфигурации vhost, вы всегда должны делать это..Htaccess интерпретируется при каждом отдельном запросе на ваш сайт, в то время как vhost.conf интерпретируется только при перезапуске / перезагрузке httpd.

Вы можете установить Options в 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?

...