Liebe zum Design.

Optimierung von Textpattern mit .htaccess.

Dieser Artikel wurde am 18. Mai 2010, 12.50 Uhr in der Kategorie »« veröffentlicht.

Das Thema Suchmaschinenoptimierung ist ein weit umfassendes Gebiet, welches sich in zeitgemäßer Umgebung und professioneller Webentwicklung nicht mehr wegdenken lässt. In diesem Artikel möchte ich eine serverseitige Strategie, am Beispiel der .htaccess-Datei von Textpattern, in Bezug auf eine optimale Suchmaschinen-Indexierung verfolgen.

Öffnen Sie zunächst Ihre .htaccess-Datei oder laden Sie die jeweilige Version dieser unter folgender URL: http://textpattern.googlecode.com/svn/releases/

Entfernung von kanonischen URLs mit mod_rewrite.

Wenn Sie auf Ihre Website mit und ohne www-Präfix zugreifen können, wird Ihre Website früher oder später am Google Canonical Problem leiden. Dieses Problem können Sie ganz einfach umgehen, indem Sie zwei Zeilen Code direkt nach RewriteEngine On in Ihre .htaccess-Datei einfügen.

Weisen Sie den Webserver an www zu nutzen.

RewriteCond %{HTTP_HOST} ^yourdomain.com$ [NC]
RewriteRule ^(.*) http://www.yourdomain.com/$1 [R=301,L]

oder alternativ

Weisen Sie den Webserver an kein www zu nutzen.

RewriteCond %{HTTP_HOST} ^www.yourdomain.com$ [NC]
RewriteRule ^(.*) http://yourdomain.com/$1 [R=301,L]

Dies löst nur einen Teil vom Problem des doppelten Inhalts (duplicate content). Werfen Sie einen Blick auf die unten stehenden URLs. Sie zeigen beide auf den gleichen Inhalt, aber Google sieht diese als zwei verschiedene Seiten an.

http://www.yourdomain.com/section/title
http://www.yourdomain.com/section/title/

Durch das Hinzufügen eines abschließenden Schrägstriches (forward slash) an jede URL ist dieses Problem mit folgender Zeile zu beheben:

RewriteRule ^(.+[^/])$ http://www.yourdomain.com/$1/ [R=301,L]

Nutzen Sie mod_headers um den Cache zu kontrollieren.

Für dynamisch generierte Webseiten nutzen Sie für HTML- und PHP-Dokumente einen Wert von einer Sekunde (1), für statische Webseiten können Sie den Wert auf einen Tag (86400) hochsetzen.

<IfModule mod_headers.c>
  # Default: 1 Week
  Header set Cache-Control "max-age=604800, public"

  # 1 Year: ICO, PDF, FLV
  <FilesMatch "\.(ico|pdf|flv)$">
    Header set Cache-Control "max-age=31536000, public"
  </FilesMatch>

  # 1 Month: JPG, JPEG, PNG, GIF, SWF, OGG, MP4
  <FilesMatch "\.(jpg|jpeg|png|gif|swf|ogg|mp4)$">
    Header set Cache-Control "max-age=2592000, public"
  </FilesMatch>

  # 1 Month: XML, TXT, CSS, JS, JSON
  <FilesMatch "\.(xml|txt|css|js|json)$">
    Header set Cache-Control "max-age=2592000, public"
  </FilesMatch>

  # 1 Month: TTF, OTF, EOT, SVG
  <FilesMatch "\.(ttf|otf|eot|svg)$">
    Header set Cache-Control "max-age=2592000, public"
  </FilesMatch>

  # 1 Second: HTML, HTM, PHP
  <FilesMatch "\.(html|htm|php)$">
    Header set Cache-Control "max-age=1, public"
  </FilesMatch>
</IfModule>

Nutzen Sie mod_expires um dem Cache ein Verfallsdatum zuzuweisen.

ACHTUNG: Seien Sie mit dieser Funktion sehr vorsichtig, ein Expires-Header von einem Tag – für dynamisch generierte Webseiten – kann ein bestehendes Kommentarsystem zerstören.

<IfModule mod_expires.c>
  # Enable expirations.
  ExpiresActive On

  # Cache all files for 1 week
  ExpiresDefault A604800

  # 1 Year: ICO, PDF, FLV
  <FilesMatch "\.(ico|pdf|flv)$">
    ExpiresDefault A31536000
  </FilesMatch>

  # 1 Month: JPG, JPEG, PNG, GIF, SWF, OGG, MP4
  <FilesMatch "\.(jpg|jpeg|png|gif|swf|ogg|mp4)$">
    ExpiresDefault A2592000
  </FilesMatch>

  # 1 Month: XML, TXT, CSS, JS, JSON
  <FilesMatch "\.(xml|txt|css|js|json)$">
    ExpiresDefault A2592000
  </FilesMatch>

  # 1 Month: TTF, OTF, EOT, SVG
  <FilesMatch "\.(ttf|otf|eot|svg)$">
    ExpiresDefault A2592000
  </FilesMatch>

  # 1 Second: HTML, HTM, PHP
  <FilesMatch "\.(html|htm|php)$">
    ExpiresDefault A1
  </FilesMatch>
</IfModule>

Nutzen Sie mod_deflate um Ihre Website komprimiert auszuliefern.

<IfModule mod_deflate.c>
  # Compress: JS, JSON, CSS, HTML, HTM, PHP, XML, TTF, OTF, EOT, SVG
  <FilesMatch "\.(js|json|css|html|htm|php|xml|ttf|otf|eot|svg)$">
    SetOutputFilter DEFLATE
  </FilesMatch>
</IfModule>

Die IfModule-Direktiven stellen sicher, dass auf die jeweilige Konfiguration verzichtet wird, wenn die Module nicht vorhanden bzw. nicht geladen sind.

Folgend die entgültige .htaccess-Datei.

#DirectoryIndex index.php index.html

#Options +FollowSymLinks
#Options -Indexes
#ErrorDocument 403 default

<IfModule mod_rewrite.c>
  RewriteEngine On
  #RewriteBase /relative/web/path/

  # Force Apache to use www
  RewriteCond %{HTTP_HOST} ^yourdomain.com$ [NC]
  RewriteRule ^(.*) http://www.yourdomain.com/$1 [R=301,L]

  RewriteCond %{REQUEST_FILENAME} -f [OR]
  RewriteCond %{REQUEST_FILENAME} -d
  RewriteRule ^(.+) - [PT,L]

  # Add trailing slash
  RewriteRule ^(.+[^/])$ http://www.yourdomain.com/$1/ [R=301,L]

  RewriteRule ^(.*) index.php

  RewriteCond %{HTTP:Authorization}  !^$
  RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
</IfModule>

#php_value register_globals 0

# SVG
AddType image/svg+xml  svg svgz
AddEncoding gzip       svgz

<IfModule mod_headers.c>
  # Default: 1 Week
  Header set Cache-Control "max-age=604800, public"

  # 1 Year: ICO, PDF, FLV
  <FilesMatch "\.(ico|pdf|flv)$">
    Header set Cache-Control "max-age=31536000, public"
  </FilesMatch>

  # 1 Month: JPG, JPEG, PNG, GIF, SWF, OGG, MP4
  <FilesMatch "\.(jpg|jpeg|png|gif|swf|ogg|mp4)$">
    Header set Cache-Control "max-age=2592000, public"
  </FilesMatch>

  # 1 Month: XML, TXT, CSS, JS, JSON
  <FilesMatch "\.(xml|txt|css|js|json)$">
    Header set Cache-Control "max-age=2592000, public"
  </FilesMatch>

  # 1 Month: TTF, OTF, EOT, SVG
  <FilesMatch "\.(ttf|otf|eot|svg)$">
    Header set Cache-Control "max-age=2592000, public"
  </FilesMatch>

  # 1 Second: HTML, HTM, PHP
  <FilesMatch "\.(html|htm|php)$">
    Header set Cache-Control "max-age=1, public"
  </FilesMatch>
</IfModule>

<IfModule mod_expires.c>
  # Enable expirations.
  ExpiresActive On

  # Cache all files for 1 week
  ExpiresDefault A604800

  # 1 Year: ICO, PDF, FLV
  <FilesMatch "\.(ico|pdf|flv)$">
    ExpiresDefault A31536000
  </FilesMatch>

  # 1 Month: JPG, JPEG, PNG, GIF, SWF, OGG, MP4
  <FilesMatch "\.(jpg|jpeg|png|gif|swf|ogg|mp4)$">
    ExpiresDefault A2592000
  </FilesMatch>

  # 1 Month: XML, TXT, CSS, JS, JSON
  <FilesMatch "\.(xml|txt|css|js|json)$">
    ExpiresDefault A2592000
  </FilesMatch>

  # 1 Month: TTF, OTF, EOT, SVG
  <FilesMatch "\.(ttf|otf|eot|svg)$">
    ExpiresDefault A2592000
  </FilesMatch>

  # 1 Second: HTML, HTM, PHP
  <FilesMatch "\.(html|htm|php)$">
    ExpiresDefault A1
  </FilesMatch>
</IfModule>

<IfModule mod_deflate.c>
  # Compress: JS, JSON, CSS, HTML, HTM, PHP, XML, TTF, OTF, EOT, SVG
  <FilesMatch "\.(js|json|css|html|htm|php|xml|ttf|otf|eot|svg)$">
    SetOutputFilter DEFLATE
  </FilesMatch>
</IfModule>

Für eventuelle Folgeschäden oder Datenverluste übernimmt VivaLaJack.de keine Gewähr. Im Allgemeinen empfiehlt es sich, vor Beginn der Arbeiten ein komplettes Backup aller Dateien anzulegen.

VivaLaJack.de | René Jackowski

Über diesen Blog

Das Blog informiert über Aktuelles und Neues von und rundum VivaLaJack.de.

Blog Startseite

Archiv

Zur Übersicht aller bisherigen Artikel »

Kontakt

VivaLaJack.de
graphic design | web development

Bernkasteler Straße 6
54497 Morbach

Telefon: 0 65 33 . 9 57 43 50
Telefax: 0 65 33 . 9 57 43 55

E-Mail schreiben!

Ihr Ansprechpartner ist René Jackowski.