Virtual Hosts – mod_rewrite funktioniert nicht mit meiner .htaccess Datei

09. Dezember 2011  |  Kommentar schreiben   |  Tags: , , , , ,



Bei Facebook teilen

Heuzutage sind Suchmaschinen-freundliche URLs lebensnotwendig, wenn ein Webmaster seine Seite für die Suchmaschinen gut optimieren möchten. Bei vielen Webseiten und vor allem mit der Arbeit von professional CMS können und werden die einzelnen Seiten nicht auf dem Server angelegt, sondern sie werden mit einer künstlichen URL versehen, die von dem Programmierer interpretiert werden muss. Hiermit bekommen Sie statt /index.php?id=34&cat=3, eine solche URL – /guenstige-angebote-fuer-reifen.html (sogenannte Permalinks). Dies ist problemlos möglich, wenn das Apache Modul mod_rewrite eingesetzt wird – als Zusatz-befehl in der .htaccess Datei, die entweder im Virtual Host Einrichtung oder im Root Verzeichnis der Webseite liegt.

Problematik

Es gibt viele Wege in der .htaccess Datei die mod_rewrite Anweisung zu programmieren. Jedoch ist es am häufigsten, dass mod_rewrite so eingesetzt wird, dass alle existierenden Dateien auf dem Server direkt aufgerufen werden können und alle anderen Pfade, die angefordert werden, werden an die index.php Datei geleitet zwecks Interpretation/Parsen. Dies funktioniert aber nicht immer sofort und viele Webmaster haben das Problem die Ursache zu finden. Wir betrachten heute einige der Fehler, die höchstwahrscheinlich auch bei Ihnen zutreffen.

Alle Angaben, die wir nachfolgend betrachten, können auch in der VirtualHost-Einrichtung vorgenommen werden.

Ursache 1 – Unterstützung durch Apache

Stellen Sie sicher, dass das Apache Modul mod_rewrite tatsächlich auf dem Server verfügbar ist. Wenn Sie sich nicht sicher sind, so können Sie Ihren Provider oder Administrator danach fragen.

Ursache 2 – Syntax

Anbei eine funktionierende  Einrichtung in der .htaccess Datei für die Nutzung von mod_rewrite für Suchmaschinenfreundliche URLs:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php

Die obigen Befehle richten folgendes ein:

  1. Schalte mod_rewrite an
  2. Falls die aufgerufene Adresse nicht eine tatsächlich auf dem Server liegende Datei oder Ordner ist, so bitte die so tun, als wäre die index.php Datei aufgerufen.

Achten Sie darauf, dass jede Zeile umbrochen wird (das ist der Delimiter für .htaccess), dass keine Raute vor einer Zeile ist (die Raute kommentiert die Zeile aus) und dass die index.php Datei existiert. Nun können Sie in der index.php Datei die URL parsen und Ihre entsprechenden Inhalte laden.

Ursache 3 – Syntax mit RewriteBase

Manchmal benötigen Sie die Angabe über die Basis der Weiterleitung mit RewriteBase, in dem Fall der Rootverzeichnis:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php

Falls die .htaccess ein einem Ordner liegt, der nicht die index.php entspricht, falls beispielsweise Symlinks eingesetzt werden, so benötigen Sie eine richtge Basis für Ihre Weiterleitung. Dies könnte das Problem bei Ihnen sein, normalerweise wird aber diese Einstellung nicht benötigt.

Ursache 4 – Übergeordneter Ordner mit AllowOverride None für .htaccess gesperrt

Eine Ursache, die nach der Sie vielleicht stundenlang suchen könnten – stellen Sie sicher, dass die allgemeine Virtual Host Einstellung für den Ordner, in dem sich die .htaccess Datei befindet, nicht für nachträgliche Änderungen von .htaccess Datei Befehle gesperrt ist. Dies geschieht durch folgendes Befehl:

AllowOverride None

Dies schließt jegliche Wirkung von der .htaccess Datei und somit von Ihrer URL Weiterleitung. Nutzen Sie am besten – AllowOverride All, natürlich nur für den entsprechenden Ordner.

Fazit

Obige Einstellungen sind normalerweise mehr als genug für eine problemfreie Installation.

Wenn Sie aber immer noch ein Problem mit Ihrer Serveradministration und Einrichtung von Ihrer .htaccess haben - dann können Sie aber uns gerne ansprechen.
use-media hilft Ihnen weiter, senden Sie uns eine E-Mail oder rufen Sie an – 02161 177747.

 

Teilen

Hinterlasse eine Antwort

Du musst angemeldet sein, um einen Kommentar abzugeben.