
Ich habe versucht, alle direkten Zugriffe in meinem Unterordner mit diesem Code umzuleiten
RewriteEngine on
RewriteCond %{HTTP_COOKIE} !user_cookie=[^;]
RewriteRule .* http://webhost.org/ [R=301,L]
Mir ist klar, dass es nur für OHP-Dateien funktioniert hat, nicht aber für andere Dateien wie HTML. Ich habe versucht, auf den Link zur PHP-Datei zuzugreifen, und es funktioniert wie geplant, aber wenn ich auf die andere Datei mit der .html
Erweiterung zugreife, erfolgt keine Umleitung, als ob die Bedingung von ignoriert würde .htaccess
.
Ich bin neu bei .htaccess
. Was mache ich falsch?
Serverinformation:
- Neuinstallation von Vestacp
- Apache/2.2.15 (CentOS 6 x64)
Antwort1
Der von Ihnen gepostete Code gilt nicht unbedingt für „direkte“ Anfragen. Er gilt, wenn kein Cookie gesetzt ist (d. h. nicht im Cookie
HTTP-Anforderungsheader zurückgesendet wird) – das ist nicht dasselbe. (Vermutlich setzen Sie ein „Sitzungs“-Cookie? Die Definition einer „Sitzung“ in den Browsern variiert jedoch, sodass diese Cookies letztendlich mehr sein könnenhartnäckigals Sie erwarten.)
Wenn es „nur für PHP-Dateien funktioniert, aber nicht für andere Dateien wie HTML“, dann liegt es daran, dass der Browser den Cookie
HTTP-Anforderungsheader für Anfragen an Ihre PHP-Dateien nicht sendet – aus irgendeinem Grund. Vielleicht sind die PHP-Dateien „falsch“ und der Cookie:
Header sollte gesendet werden – wie bei HTML-Dateien?
Der Unterschied zwischen Ihren PHP- und HTML-Dateien könnte auf das Caching, die Domäne und/oder den URL-Pfad zurückzuführen sein. Dies hat nichts mit Ihrem .htaccess
Skript zu tun.
Um auf „direkten Zugriff“ zu prüfen, ist es üblicher, nach einem leeren Referer
Header zu suchen. Diese (und jede andere) Methode, die Sie verwenden, ist jedoch nicht ganz zuverlässig.