tas2580
Blog über Webentwicklung

Webseite über die .htaccess optimieren

tas2580  

Wer seine Webseite über den Apache Webserver ausliefern lässt kann auch ohne Zugriff auf die Konfigurationsdatei des Apache einige Einstellungen am Webserver vornehmen. Dazu muss einfach eine Datei mit dem Namen .htaccess angelegt werden. Durch die richtigen Einträge in der .htaccess kann man einige Optimierungen vornehmen und so z.B. dafür sorgen dass die Webseite schneller ausgeliefert wird. Ich habe hier mal einige Dinge gesammelt durch die man seine Webseite per .htaccess optimieren kann.

X-Powered-By entfernen

Wenn man PHP einsetzt um seine Seiten zu erstellen wird im Response Header "X-Powered-By" ausgegeben, darin ist die verwendete PHP Version enthalten. Das sieht dann z.B. folgendermaßen aus: X-Powered-By: PHP/5.5.9-1ubuntu4.13. Da diese Information normalen Besuchern nichts bringt und nur unnötig den Response Header aufbläht kann man den Eintrag auch weg lassen. Es ist eh selten eine gute Idee Versionsnummern öffentlich anzuzeigen da darüber eventuelle Sicherheitslücken erkannt werden können.

Um "X-Powered-By" auszublenden muss folgender Eintrag in die .htaccess

Header always unset "X-Powered-By"

Caching für Bilder, CSS und JavaScript

Ressourcen die sich nur selten ändern wie Bilder CSS und JavaScript Dateien können gecached werden. So werden sie vom Browser zwischengespeichert und nicht bei jedem Seitenaufruf neu runter geladen. Das spart Requests und Trafic ein was die Seite ab dem zweiten Seitenaufruf deutlich beschleunigt. Dabei sollte man allerdings darauf achten dass man Dateien die sich häufiger ändern nicht oder nur kurz cached da sonst neu veröffentlichte News o.Ä. erst angezeigt werden wenn die Cache Zeit abgelaufen ist.

Um Caching zu aktivieren muss folgender Eintrag in die .htaccess, die Zahl hinter max-age gibt dabei an für wie viele Sekunden die Dateien im Cache bleiben sollen. Bei Bedarf können noch weitere Dateiendungen in der ersten Zeile eingefügt werden.

<filesmatch "\.(gif|flv|jpg|jpeg|png|gif|css|ico)$"="">
   Header set Cache-Control "max-age=2419200, public"
</filesmatch>

Komprimierung per Deflate

Moderne Browser unterstützen Komprimierung, das heißt die zu übertragenden Ressourcen werden auf dem Webserver gepackt und so an den Browser übertragen. Der Browser entpackt die Ressourcen dann wieder um sie anzuzeigen. Das kostet zwar minimal mehr Rechnenzeit auf dem Server und im Browser, spart aber einiges an Trafic ein. Da CPUs heute ohnehin sehr schnell sind, die Netzwerkbandbreite aber nicht immer gut ist empfiehlt es sich diese Technik einzusetzen.

<ifmodule mod_deflate.c="">
   AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript
</ifmodule>

Das setzt voraus, dass mod_deflate auf dem Apache Server installiert ist.

Mem Cache

Durch mod_mem_cache werden Ressourcen im RAM gecached und müssen so nicht bei jedem Seitenaufruf neu von der Festplatte geladen werden. Das kann bei dynamischen Webseiten einen deutlichen Performance Gewinn bringen.

<ifmodule mod_cache.c="">
    <ifmodule mod_mem_cache.c="">
        CacheEnable mem /
        MCacheSize 4096
        MCacheMaxObjectCount 100
        MCacheMinObjectSize 1
        MCacheMaxObjectSize 2048
    </ifmodule>
</ifmodule>

Welche Werte man hier einstellt hängt ein wenig vom Server ab, am besten spielt man einfach mal ein bisschen mit den Werten und prüft was das beste Ergebnis bringt.

MCacheSize
Größe des Memory in KByte den der Cache verwenden darf
MCacheMaxObjectCount
Anzahl der maximal zu Cachenden Objekte
MCacheMinObjectSize
Minimale Größe in Byte eines Objekts, das in den Cache geladen wird
MCacheMaxObjectSize
Maximale Größe in Byte die ein Objekt, das in den Cache geladen wird

Standard Domain definieren

Viele Webseiten sind mit und ohne www erreichbar. Das führt dazu dass Suchmaschinen beide Versionen in den Index aufnehmen was zu doppeltem Content führt und das Ranking der Webseite verschlechtern kann. Um das zu verhindern sollte man eine Version der URL als Standard festlegen und die andere Version per 301 auf die Standard Domain weiterleiten.

Webseite ohne www

<ifmodule mod_rewrite.c="">
	RewriteEngine On
	RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
	RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
</ifmodule>

Webseite mit www

<ifmodule mod_rewrite.c="">
	RewriteEngine On
	RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
	RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
</ifmodule>

Webseite mit https

Wer ein SSL Zertifikat für seine Webseite hat kann alle Besucher dazu zwingen die Seite über HTTPS aufzurufen und so nur noch verschlüsselten Trafic erlauben.

<ifmodule mod_rewrite.c="">
	RewriteEngine On
	RewriteCond %{HTTPS} !on
	RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</ifmodule>

Das setzt voraus, dass mod_rewrite auf dem Apache Server installiert ist.

Eigene Fehlerseiten

Wenn man seine Fehlerseiten etwas verschönen möchte kann man das auch über die .htaccess machen. Dazu muss man sich zuerst für jeden Fehler den man mit einer schöneren Seite ausgeben möchte eine HTML Datei (PHP Dateien sind auch möglich) anlegen die man nach belieben Designen kann. Anschließend benötigt man folgende Einträge in der .htaccess.

ErrorDocument 401 401.html
ErrorDocument 403 403.html
ErrorDocument 404 404.html
ErrorDocument 500 500.html

Das kann natürlich noch um weitere Fehlercodes erweitert werden.

Mit PHP können alle verfügbaren Apache Module aufgelistet werden. Dazu erstellt man eine PHP Datei mit folgendem Inhalt:
<?php
print_r
(apache_get_modules());

Ähnliche Beiträge


Kommentare


Bitte warten ...

Kommentar schreiben

URLs werden automatisch umgewandelt.
[b]DEIN TEXT[/b] für Fett gedruckt
[quote]DEIN ZITAT[/quote] für Zitate
[code]DEIN CODE[/code] für Code
captcha