Sie können die Include
Direktive in verwenden httpd.conf
, um Weiterleitungen in einer anderen Datei zu verwalten. Es wäre jedoch nicht sehr effizient, da jede Anforderung mit einer Vielzahl regulärer Ausdrücke verglichen werden müsste. Auch ein Neustart des Servers wäre nach jeder Änderung in der Datei erforderlich.
Eine bessere Möglichkeit für so viele Weiterleitungen wäre die Verwendung der RewriteMap- Direktive des Typs dbm
, um eine Zuordnung von URIs zu Weiterleitungen zu deklarieren. Auf diese Weise wird es effizient, da DBM-Suchvorgänge sehr schnell sind und Sie nach einer Änderung in der Zuordnung keinen Server neu starten müssen, um die Änderungszeit der Zuordnungsdatei zu httpd
überprüfen.
Eine Umschreiberegeln würde so aussehen (getestet auf meinem Fedora 16 Computer):
RewriteEngine On
RewriteMap redirects dbm=db:/etc/httpd/conf/redirects.db
RewriteCond ${redirects:$1} !=""
RewriteRule ^(.*)$ ${redirects:$1} [redirect=permanent,last]
Und dbm map würde aus einer Textkarte erstellt, die so aussieht /etc/httpd/conf/redirects.txt
:
/foo http://serverfault.com/
/bar/lorem/ipsum/ http://stackoverflow.com/
mit einem Befehl
httxt2dbm -f db -i /etc/httpd/conf/redirects.txt -o /etc/httpd/conf/redirects.db
!=
und kein Leerzeichen geben kann.""
Ich habe mein Beispiel auf eine funktionierende und getestete Version korrigiert.?
in der URL), aber es ist auch möglich . So wie es jetzt ist, würde es nur eine Abfragezeichenfolge hinzufügen, um umzuleiten, zum Beispielhttp://yourserver.com/foo?q=bar
umzuleitenhttp://serverfault.com/?q=bar
.RewriteMap redirects dbm=db:/etc/httpd/conf/redirects.db
gab fehlerRewriteMap dbm type db is invalid
. Aber als ich es benutzt habe, hatRewriteMap redirects txt:/etc/httpd/conf/redirects.txt
es funktioniert. Ich möchte immer noch gehackt vorgehen, wie Sie es erklärt haben, anstatt mit einfachem Text. Aber ich konnte nicht viel über den dbm-Fehler herausfinden. Danke für Ihre Hilfe.Ich würde ein Skript schreiben, das einen neuen VHOST mit nur den Links aus der Liste generiert.
quelle