Som du sikkert ved er .htaccess en performance-klods om benet, den betyder at webserveren skal søge samtlige undermapper rekursivt igennem hvergang den foretager en forespørgsel. Derfor giver det mening at forsøge at skaffe sig af med .htaccess filer, og hvis man f.eks kører WordPress kan det gøres ved at flytte WordPress’ mod_rewrite statements i VirtualHost direktivet.
Start med at cut’n’paste indholdet af .htacces
root@specialhosting:~# vi /var/www/.htaccess
I 95% af tilfældend vil det se ud som flg.
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule>
Indsæt linierne i din virtualhost :
root@specialhosting:~# vi /etc/apache2/sites-enabled/000-default
I mit tilfælde så det sådan her ud:
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Derefter slettede jeg min .htaccess fil og genstartede apache, og konstaterede at min blog fungerede endnu:
root@specialhosting:~# rm /var/www/.htaccess root@specialhosting:~# /etc/init.d/apache2 restart Restarting web server: apache2 ... waiting . root@specialhosting:~#
Og et par klik rundt på nogle af min blogs undersider verificerede at alt var i sin skønneste orden, nemt og ligetil 😀