So definieren Sie Parameter / Konstanten in Apache-.htaccess-Dateien
Ich habe keinen Zugriff auf die Konfigurationsdateien des Apache-Servers und kann die Konfiguration nur über .htaccess
Dateien beeinflussen. Leider schränkt dies einige Dinge ein, die man vielleicht tun möchte. Der einfachste Weg, alle HTTP-Anforderungen an HTTPS umzuleiten, wäre beispielsweise:
<If "% != 'on'"> Redirect permanent / https://www.my-domain.com/ </If>
Dies zwingt mich jedoch dazu, den Domänennamen fest zu codieren, sodass ich diese .htaccess
Datei nicht ohne weiteres wiederverwenden kann. In meinem Fall kann auf die gleiche Site von mehreren verschiedenen Domains (mit nur einem darunter liegenden Dateisystem) aus zugegriffen werden, so dass dies für mich überhaupt keine Option ist. Ich kann dieses Problem nicht lösen, indem ich weitergeleitet werde an, https://%/
da die Redirect
Anweisung diese Art der Variablenersetzung nicht unterstützt ( außer in <Location>
oder <LocationMatch>
Abschnitten, aber diese stehen.htaccess
natürlich nicht für Dateien zur Verfügung ).
Wenn ich also eine allgemeine / wiederverwendbare .htaccess
Konfiguration haben möchte, muss ich die Verwendung von Servervariablen mod_rewrite
anstelle von Redirect
verwenden. Die entsprechende Lösung ist
RewriteCond % !=on RewriteRule ^ https://%% [R=permanent,L]
Das ist schon wesentlich komplexer, ganz zu schweigen von möglichen Interaktionen mit anderen mod_rewrite
Regeln, die ich vielleicht aufstellen möchte - vorzugsweise möchte ich es mod_rewrite
wegen seiner Komplexität auf ein Minimum beschränken.
Ein anderes Beispiel, für das ich überhaupt keine Problemumgehung gefunden habe, ist die mod_substitute
, die %
Erweiterungen überhaupt nicht unterstützt . Wenn sich meine Site in einem bestimmten Unterverzeichnis ( sub_dir
) auf dem Server befindet und ich alle Links auf HTML-Seiten in diesem Verzeichnis nachbearbeiten möchte, kann ich dies tun
AddOutputFilterByType SUBSTITUTE text/html Substitute s~/sub_dir/[^\s]+/~/sub_dir/something_else/~
Hier muss ich das Verzeichnis hartcodieren sub_dir
, das ich für jedes andere Unterverzeichnis ersetzen müsste, in dem ich die gleiche Ersetzung durchführen möchte (nein, ich habe keinen Zugriff auf die Root-URL /
). Wenn dies eine Umschreibungsregel wäre, könnte ich einfach eine Umgebungsvariable %
wie folgt definieren :
RewriteRule ^ - [E=site_dir:/sub_dir]
Diese Umgebungsvariable nützt mir mod_substitute
aber nichts, weil sie diese nicht interpretiert.
Gibt es eine Möglichkeit, das Festcodieren und Duplizieren von Domänen und Unterverzeichnissen wie diesem in Modulen wie mod_alias
oder zu vermeiden mod_substitute
, die nicht die gleichen Mechanismen haben wie mod_rewrite
? Zum Beispiel durch den Zugriff auf Umgebungsvariablen wie %
in diesen Modulen?
0 Antworten auf die Frage
Verwandte Probleme
-
4
Gutes freies Ubuntu Server-VMWare-Image benötigt
-
1
Apache Reverse Proxy
-
1
Umleitung: Wie kam das zusätzliche Wort in die Datei?
-
3
Javac-Befehl nicht gefunden
-
9
Gibt es ein Befehlszeilentool, mit dem Umgebungsvariablen in Windows bearbeitet werden können?
-
5
gmail leitet das ursprüngliche Land auch nach der Aktualisierung weiter
-
3
Ubuntu Server mit GNOME Desktop Envinronment - Einstellen der Apatche-Konfigurationsdateiberechtigun...
-
4
Unterschied zwischen "a = b" und "export a = b" in bash
-
4
Wie stelle ich eine Umgebungsvariable für eine GNOME-Sitzung ein?
-
8
Wie kann ich allen Benutzern in Linux Schreibzugriff auf einen Ordner gewähren?