.htaccess mod_rewrite und RewriteRule testen

Wiedermal die .htaccess modifiziert, und leider ein Fehler drin. Martin Merlin bietet ein Online-Test Tool an zum einfachen debuggen.

Wiedermal die .htaccess modifiziert, und leider ein Fehler drin. Anpassen, hochladen, testen, anpassen, hochladen, testen, anpa…

Schnell wird man dieses Prozesses überdrüssig, und für ein kleines Hobbyprojekt hat man normalerweise keine Testumgebung zur Verfügung. Macht man die Änderungen direkt, resultiert das für einen signifikanten Zeitraum in Fehlverhalten auf der eigenen Homepage. Zusätzlich pfuscht einem das Caching-Verhalten des Browsers noch dazwischen, da müssen Alternativen her!

Ein eigener Apache Server zwecks Testen einer .htaccess Anpassung der RewriteCondition oder RewriteRule ist natürlich möglich, aber auch schon ein gehöriger Zusatzaufwand. Auch ein Unterverzeichnis am Webserver wäre eine Möglichkeit, bedeutet aber immernoch einen Uploadaufwand. Martin Melin hat sich wohl ähnliches gedacht bevor er sein Online Debug Tool für die mod_rewrite Regeln im .htaccess File geschrieben hat.

http://martinmelin.se/rewrite-rule-tester/

Beispiel rewrite-rule-testerIn diesem Tool kann man bequem seine Url Konvertierungen debuggen. Dazu gibt man seine Regeln bekannt und trägt eine Test URL ein. Führt man den Test durch spielt das Tool die Überprüfung der Regeln anhand dieser TestURL durch und präsentiert dannach ansehlich das Resultat. Farblich hervorgehoben wird welche Regeln geprüft wurden. Rot für Regeln die für die URL als nicht gültig erkannt wurden, Grün für die Treffer.

Im Beispiel Screenshot sind 5 Regeln definiert, da diese nach einem gültigen Treffer alle weitern Regeln überspringen [L] sind im Ergebnisbereich nur 4 Treffer angeführt.

Hat mir einigen Ärger und Zeit erspart.
Danke Martin für dieses Tool!

Ähnliche Artikel:

PHP und $_SERVER[‚SCRIPT_URI‘] – Beispiel Soap WSDL

Die Variablen im PHP Array $_SERVER sind sehr praktisch für die automatische Zusammenstellung von absoluten URLs. Eine Variable davon heißt SCRIPT_URI. Diese beinhaltet die komplette URL (aus der Adresszeile des Browsers) inlusive Protokoll, Port, …

Die Variablen im PHP Array $_SERVER sind sehr praktisch für die automatische Zusammenstellung von absoluten URLs.

Eine Variable davon heißt SCRIPT_URI (also anzusprechen unter $_SERVER[‚SCRIPT_URI‘])

Diese beinhaltet die komplette URL (aus der Adresszeile des Browsers) inlusive Protokoll, Port, …

Leider ist sie jedoch nicht immer verfügbar.

Nachprüfen lässt sich das mit einer php Datei mit Inhalt

<?php phpinfo();

Beim Aufruf der Seite bekommt man im Abschnitt Apache Environment alle $_SERVER Variablen zu sehen.

Falls sich hierbei $_SERVER[‚SCRIPT_URI‘] nicht findet fehlt das Apache Modul mod_rewrite bzw. es ist nicht aktiviert.

Dies lässt sich nachholen durch das Laden des entsprechenden Apache Moduls:

LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so

Wenn das Modul geladen ist, muss es noch mit:

RewriteEngine on

aktiviert werden. Dies kann sowohl in der Konfigurationsdatei des Apache Webservers erfolgen als auch in einer .htaccess Datei im jeweiligen Script Verzeichnis.

Ebenfalls Voraussetzung für das Vorhandensein der Variable ist, dass die Webseite in einem Virtuellen Host liegt:

<VirtualHost *:80>
	ServerAdmin webmaster@domain.tld
	DocumentRoot /....
	ServerName www.domain.tld
	...
</VirtualHost>

Dies sollte jedoch bei den meisten Hostern bereits der Fall sein (auch viele Linux Distributionen liefern Ihre Apache Konfiguration bereits standardmäßig mit Virtuellen Hosts aus).

Tipp:

Abgesehen vom Erstellen absoluter Links für beispielsweise Menüeinträge einer Webseite lässt sich $_SERVER[‚SCRIPT_URI‘] auch hervorragend dazu benutzen im Zusammenhang mit SOAP Webservices die SOAP Location der ausgelieferten WSDL Dateien anzupassen.

Auszug aus einer WSDL Datei:

...
<binding name="testBinding" type="tns:testPortType">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="login">
<soap:operation soapAction="%SOAP_LOCATION%?method=login" style="rpc" />
<wsdl:input>
...

Der dazugehörige PHP Code:

...
if( isset($_GET['wsdl']) ) {
    $wsdl = @file_get_contents( $wsdlFile );
    if( !$wsdl ) {
        die( 'invalid wsdl file' );
    }
    $wsdl = str_replace( '%SOAP_LOCATION%', $_SERVER['SCRIPT_URI'], $wsdl );
    header( 'Content-Type: text/xml' );
    echo $wsdl;
}
....

Ähnliche Artikel: