16

我想知道如果我将 .htaccess 文件内容移动到 apache2 的 vhost 文件中是否可以提高性能?

这是我的 .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 声明中的哪个位置放置内容?

谢谢!

4

1 回答 1

13

如果您有可能编辑虚拟主机配置文件,您应该始终这样做。.htaccess 会随着对您网站的每个请求进行解释,而另一方面 vhost.conf 仅在 httpd 重新启动/重新加载时进行解释。

您可以Options在目录指令中设置 - 例如:

<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>

还可以查看 apache.org 上的这个wikipost - 特别是我应该什么时候使用,我不应该使用 .htaccess 文件?

于 2012-03-04T13:50:47.407 回答