.htacces is a bitch, rewrite regler direkte i VirtualHost

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 😀

Dette indlæg blev udgivet i Apache, Knowledge Base, Linux, Old Base. Bogmærk permalinket.

Skriv et svar