以下是我在.htaccess
文件中使用apache 2.2的唯一代码。
我已经读过,它使用.htacess
的性能影响,如果这可以用于httpd.conf
这会更好。 所以我有可能把这个添加到httpd.conf
? 如果是的话我会放在哪里?
是否需要进入虚拟主机为每个需要它的主机(在我的情况下,很多主机),或者它可以一般到httpd.conf所以适用于所有主机?
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^(.*)$ index.php?/$1 [L] </IfModule>
.htaccess
提供了一个目录的配置,而httpd.conf提供了一个全面的配置。 当然,你可以将内容从.htaccess
移到httpd.conf
。 您可以在这里找到更多关于.htaccess的信息: Apache HTTP server Tutorial:.htaccess文件
以你的.htaccess为例:
/ www / htdocs / example中的.htaccess文件的内容
<Ifmodulee mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^(.*)$ index.php?/$1 [L] </Ifmodulee>
您的httpd.conf文件中的部分
<Directory /www/htdocs/example> <Ifmodulee mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^(.*)$ index.php?/$1 [L] </Ifmodulee> </Directory>
每个VirtualHost都需要指定自己的重写规则,除非:
RewriteOptions inherit
每个VirtualHost或 include
指令 消息来源: https : //httpd.apache.org/docs/2.2/mod/mod_rewrite.html#RewriteEngine
请注意,重写配置不会被虚拟主机继承
根据Apache的文档,你可以把配置放在一个.htaccess的<Directory>
-block中。 http://httpd.apache.org/docs/2.2/howto/htaccess.html
如果您有权访问httpd主服务器配置文件,则应该完全避免使用.htaccess文件。 使用.htaccess文件会降低您的Apache HTTP服务器速度。 您可以包含在.htaccess文件中的任何指令在目录块中设置得更好,因为它具有相同的效果,性能更好。
为了简化管理,我会把重写指令放在一个单独的文件中,然后包含在每个虚拟主机中。 它应该工作。