Wer sich inten­si­ver mit sei­ner Wor­d­Press-Instal­la­ti­on beschäf­tigt, kennt mit Sicher­heit die .htac­cess-Datei, die im Root­ver­zeich­nis des jewei­li­gen Blogs liegt.


Denn wer “spre­chen­de” URLs in sei­nem Blog und nicht nur die Daten­satz­kenn­zeich­nung einer Sei­te in der Brow­s­er­zei­le anzei­gen will, der gene­riert bei der Blog­ein­rich­tung unter dem Punkt “Ein­stel­lun­gen — Per­ma­links” eine ent­spre­chen­de HTAC­CESS-Datei, in der die URLs umge­schrie­ben wer­den.

Einstellung für die Permalinks

Für die URL-Umschrei­bung wird das Modul mod_​rewrite ange­spro­chen, das die meis­ten Hos­ter bzw. Pro­vi­der schon in recht klei­nen Webs­pace-Pake­ten anbie­ten. Den­noch soll­te man sich vor­her erkun­di­gen, ob es auch wirk­lich im Leis­tungs­um­fang des jewei­li­gen Hos­tig­pa­kets ent­hal­ten ist.

Bei­spiel spre­chen­de URL: www​.geld​-online​-blog​.de/​h​t​a​c​c​e​s​s​-​d​a​t​e​i​-​a​n​l​e​gen

Bei­spiel Daten­satz­kenn­zeich­nung in der URL: www​.geld​-online​-blog​.de/​?​p​=​123

Das ers­te Bei­spiel sagt deut­lich mehr aus als das zwei­te.

In der HTACESS-Datei steht dann fol­gen­der Code für die Umschrei­bung der Per­ma­links:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ -
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Weitere wichtige Einstellungen für die HTACCESS-Datei

Mit der Aus­füh­rung die­ses Schrit­tes hat der Blog eine .htac­cess-Datei, in der nicht all­zu viel steht. Doch es gibt noch wei­te­re emp­feh­lens­wer­te Ein­stel­lun­gen für die HTAC­CESS-Datei, die vor allem die Lade­ge­schwin­dig­keit des Blogs ver­bes­sern wird. Die­se wer­de ich hier näher auf­füh­ren.

Doppelter Inhalt

Der fol­gen­de Ein­trag in die .htac­cess ver­hin­dert dop­pel­ten Inhalt. Denn in den meis­ten Fäl­len kann ein Blog ent­we­der mit www oder ohne www in der URL auf­ge­ru­fen wer­den. Die Such­ma­schi­nen sehen in die­ser Opti­on aller­dings zwei ver­schie­de­ne Web­sites, die über den glei­chen Inhalt ver­fü­gen.

Lesen  Ladegeschwindigkeit optimieren: 2. Vorbereitungen

Um zu ver­mei­den, dass es für jede Sei­te zwei Link­zie­le gibt und die Such­ma­schi­nen dies als “Dupli­ca­te Con­tent” anse­hen, lei­tet die fol­gen­de Anwei­sung Adres­sen ohne www mit­tels Redi­rect 301 auf die Adres­se mit www wei­ter. Der Blog- oder Web­site­be­su­cher bekommt davon nichts mit.

Nicht ver­ges­sen: Die eige­ne URL statt der Bei­spiel-URL ein­fü­gen.

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www.meine-webseite.de$ [NC]
RewriteRule ^(.*)$ http://www.meine-webseite.de/$1 [R=301,L]

Browsercache

Mit dem unten genann­ten Code wird der Cache der jewei­li­gen Brow­ser so beein­flusst, dass über­flüs­si­ge Ser­ver­an­fra­gen ent­fal­len. Die ange­ge­be­nen Datei­ty­pen wer­den für eine fest­ge­leg­te Dau­er gecached. Die auf­ge­führ­ten Zah­len hin­ter den Datei­ty­pen ist die Sekun­den­zahl von 30 Tagen.

<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/css A2592000
ExpiresByType image/gif A2592000
ExpiresByType image/png A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType image/x-icon A2592000
ExpiresByType text/plain A2592000
ExpiresByType text/javascript A2592000
ExpiresByType application/x-shockwave-flash A2592000
ExpiresByType video/x-flv A2592000
ExpiresByType application/pdf A2592000
</IfModule>

Auch die­se Anwei­sung regelt die Cache-Ver­falls­zei­ten von bestimm­ten Datei­ty­pen und kann anstel­le des oben genann­ten Codes ver­wen­det wer­den.

# Cache-Control Headers
<IfModule mod_headers.c>
<filesMatch "\.(ico|jpe?g|png|gif|swf)$">
Header set Cache-Control "public"
</filesMatch>
<filesMatch "\.(css)$">
Header set Cache-Control "public"
</filesMatch>
<filesMatch "\.(js)$">
Header set Cache-Control "private"
</filesMatch>
<filesMatch "\.(x?html?|php)$">
Header set Cache-Control "private, must-revalidate"
</filesMatch>
</IfModule>
<IfModule mod_headers.c>
Header append Vary Accept-Encoding
</IfModule>

Komprimierung mit deflate oder gzip

Mit dem defla­te-Modul las­sen sich bestimm­te Datei­ty­pen wie Java­Script, CSS, HTML, PHP und XML ser­ver­sei­tig vor der Aus­ga­be kom­pri­mie­ren, was die Lade­zeit einer Web­site deut­lich ver­bes­sern kann. Auch die­ses Modul muss vom Pro­vi­der ange­bo­ten wer­den.

<IfModule mod_deflate.c>
 AddOutputFilterByType DEFLATE text/plain
 AddOutputFilterByType DEFLATE text/html
 AddOutputFilterByType DEFLATE text/xml
 AddOutputFilterByType DEFLATE text/css
 AddOutputFilterByType DEFLATE text/javascript
 AddOutputFilterByType DEFLATE application/xml
 AddOutputFilterByType DEFLATE application/xhtml+xml
 AddOutputFilterByType DEFLATE application/rss+xml
 AddOutputFilterByType DEFLATE application/atom_xml
 AddOutputFilterByType DEFLATE application/javascript
 AddOutputFilterByType DEFLATE application/x-javascript
 AddOutputFilterByType DEFLATE application/x-shockwave-flash
</IfModule>

Ein ande­res Kom­pri­mie­rungs­mo­dul ist gzip. Soll­te dies vom Pro­vi­der ange­bo­ten wer­den, kann fol­gen­der Code in HTAC­CESS-Datei ein­ge­fügt wer­den:

<IfModule mod_gzip.c>
 mod_gzip_on Yes
 mod_gzip_dechunk Yes
 mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
 mod_gzip_item_include handler ^cgi-script$
 mod_gzip_item_include mime ^text/.*
 mod_gzip_item_include mime ^application/x-javascript.*
 mod_gzip_item_exclude mime ^image/.*
 mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</IfModule>

Man kann auch tes­ten (falls man bei­de ver­wen­den kann), mit wel­chem Modul die Sei­te schnel­ler wird und sich dann für ein Modul ent­schei­den. Also alle bei­de Anwei­sun­gen brauchst du nicht in die HTACCESS ein­zu­fü­gen.

Lesen  Schnellere Ladezeiten mit einem Cache-Plugin: WP Super Cache

Sicherung von .htaccess und wp-config.php

Neben der .htac­cess kann man mit fol­gen­dem Code auch die wich­ti­ge wp-config.php, in der die Daten­bank-Para­me­ter ent­hal­ten sind, vor Zugrif­fen sichern.

<files wp-config.php>
Order deny,allow
Deny from all
</files>
<Files .htaccess>
Order Allow,Deny
Deny from all
</Files>

Um auf Num­mer sicher zu gehen, habe ich die Code-Blö­cke mit IfMo­du­le-Tags ein­ge­fasst, damit zuerst geprüft wird, ob das Modul zur Ver­fü­gung steht. Wenn nicht, pas­siert nichts wei­te­res, d. h. es wird kei­ne Feh­ler­mel­dung aus­ge­ge­ben.

Wer aller­dings kei­ne Angst vor Feh­ler­mel­dun­gen hat, lässt die­se IfMo­du­le-Tags ein­fach weg und pro­vo­ziert im Fal­le eines nicht vor­han­de­nen Moduls eine Feh­ler­mel­dung (500 inter­nal ser­ver error). Das kann auch hilf­reich sein, denn im ande­ren Fall wird einem das Gefühl ver­mit­telt, alle Modu­le stün­den zur Ver­fü­gung, was nicht unbe­dingt sein muss.

Änderungen an der .htaccess eintragen

Wenn du dei­ne .htac­cess ändern willst, dann lade die­se Datei von dem Web­ser­ver auf den Rech­ner und benen­ne sie dort um in htaccess.txt, also in eine ein­fa­che Text­da­tei.

Dann fügst du die Anlei­tun­gen ein, spei­cherst die Datei ab und lädst sie wie­der auf den Web­ser­ver ins Root­ver­zeich­nis. Nun muss der Name erneut ange­passt wer­den. Lösche die Datei­endung .txt und füge an den Anfang des Datei­na­mens den Punkt ein. Dann müss­te die .htac­cess-Datei wie­der funk­tio­nie­ren.

Ich füge eine .htac­cess-Datei mit all den hier erläu­ter­ten Anwei­sun­gen als ein­fa­che Text­da­tei ein und du kannst sie down­loa­den: HTAC­CESS-Down­load.

Ver­giss nicht, dass du noch URL-Anpas­sun­gen (wie oben erwähnt) vor­neh­men musst, um die Datei ver­wen­den zu kön­nen.