Sven Rautenberg: mod_Rewrite

Beitrag lesen

Moin, ihr!

kann man machen. Aber es sollte wohl besser in die httpd.conf.
Habe ich gelesen. Warum weiss ich nicht.

Richtig, schöner ist es in der zentralen Konfigurationsdatei httpd.conf des Apache-Servers, weil es dort "schneller wirkt". Eine Rewrite-Regel, die in der .htaccess-Datei steckt, wird erst recht spät im Verlauf des Auffindens der wirklichen Datei aktiv. Dort hat man zwar immer noch alle Möglichkeiten, aber eben vorher Zeit verschwendet, und möglicherweise doppelte Arbeit verursacht.

Wer httpd.conf nicht ändern kann, sollte sich keine Gedanken machen. Alle anderen sollten nach Möglichkeit keine .htaccess-Rewrites benutzen.

Was für eine Regel müsste ich erstellen, damit:
alle URLs der Form "/index.php?link=variablerinhalt" beim Browser als
URL "/variablerinhalt.htm" angezeigt würden, aber tatsächlich der Inhalt des Links "/index.php?link=variablerinhalt" angezeigt würde?

Herein kommt ein Link der Form "/variablerinhalt.htm". Als Regulärer Ausdruck wäre das "^/([^./]*).htm$" Die runden Klammern sagen aus: Beliebig viele Zeichen, außer dem Punkt und dem Slash.

Das soll gewandelt werden in "/index.php?link=variablerinhalt", oder allgemeiner gesagt in "/index.php?link=$1". $1 ist der Inhalt der ersten runden Klammer.

So ergibt sich folgende RewriteRule:

RewriteRule ^/([^./]*).htm$ /index.php?link=$1

Möglicherweise macht es Sinn, die RewriteRule durch ein paar RewriteCond-Angaben zu mildern.

Sie sollte jedenfalls keinerlei Auswirkungen auf die PHP-URLs haben, denn wenn der erste Ausdruck nicht "matcht", dann wird auch nichts umgeschrieben - IMHO.

- Sven Rautenberg