Reputation: 412
Below is the only code I have in the .htaccess
file with apache 2.2.
I've read that its a performance impact to use a .htacess
and better if this this can be run out of httpd.conf
. Therefore is it possible for me to add this into httpd.conf
? If so where would I put it?
Would it need to go into the VirtualHost for each Host that needed it (in my case a lot of hosts) or could it go generically into httpd.conf so it applies to all hosts?
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
Upvotes: 11
Views: 9400
Reputation: 1844
.htaccess
provides configuration for a directory, while httpd.conf provides an overall configuration. Of course, you can move content from .htaccess
to httpd.conf
.
You can find more about .htaccess here: Apache HTTP Server Tutorial: .htaccess files
Take your .htaccess for example:
Contents of .htaccess file in /www/htdocs/example
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
Section from your httpd.conf file
<Directory /www/htdocs/example>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
</Directory>
Upvotes: 23
Reputation: 15245
According to the Apache docs you may put the configuration in a .htaccess within a <Directory>
-block. http://httpd.apache.org/docs/2.2/howto/htaccess.html
You should avoid using .htaccess files completely if you have access to httpd main server config file. Using .htaccess files slows down your Apache http server. Any directive that you can include in a .htaccess file is better set in a Directory block, as it will have the same effect with better performance.
To ease the administration I would put the rewrite directives in a separate file that is then included in each virtual host. It ought to work.
Upvotes: 2
Reputation: 4228
Each VirtualHost needs its own rewrite rules specified, unless:
RewriteOptions inherit
within each VirtualHost
orinclude
directive within each VirtualHostSOURCE: https://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#RewriteEngine
Note that rewrite configurations are not inherited by virtual hosts
Upvotes: 2