habe ich die folgende Apache configs Setup:Fixing - Bestimmen referer
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} wp-content/uploads/gravity_forms
RewriteRule .* /cmssystem46/wp-content/uploads/test_script.php [L]
</IfModule>
In meiner /cmssystem46/wp-content/uploads/test_script.php
Datei habe ich Setup den folgenden Code ein:
<?php
/* Short and sweet - load the bare-bones of WordPress*/
define('WP_USE_THEMES', false);
require('../../wp-blog-header.php');
if (!is_user_logged_in()) {
auth_redirect(); // THIS PART WORKS ALREADY
}else{
$a = explode ('/', $_SERVER['REQUEST_URI']);
array_shift($a);
array_shift($a);
$c = implode('/', $a);
header('Location: '.get_site_url().'/'.$c.'');
exit();
}
Sehen Sie das Problem? Zwischen einer Ressource in wp-content/uploads/gravity_forms/* und der Datei test_script.php gibt es eine Endlosschleife.
Ich muss das beheben. Vom Konzept her klingt das sehr einfach: Ich füge eine neue Apache-Regel wie folgt hinzu:
RewriteCond %{HTTP_REFERER} /cmssystem46/wp-content/uploads/test_script.php
RewriteRule .* - [L] # i.e. don't do anything if the php script is redirecting back to this resource.
... Dies funktioniert jedoch nicht. Ihre Hilfe würde sehr geschätzt werden!
Kurz Hintergrund
Ich bin so mit der Sicherung der wp-content/uploads/gravity_forms Ordner damit beauftragt, dass nur Wordpress-authentifizierte Benutzer Zugriff auf seine Dateien/Medien haben.
Die Apache. Htaccess rewriterules (oben) sagt "alle HTTP-Anforderungen an die Wp-content/uploads/gravity_forms Verzeichnis sollte an die wp-content/uploads/test_script.php-Datei für die Verarbeitung gerichtet werden."
Sobald ein Benutzer zu der Datei test_scirpt.php kommt, werden sie überprüft, ob sie bei WP angemeldet sind. Wenn nicht, werden sie zum WordPress-Anmeldebildschirm weitergeleitet. Das alles funktioniert.
Wenn sie in WordPress authentifiziert werden, werden sie auf ihre ursprüngliche wp-content/uploads/gravity_forms/* Datei umgeleitet, die sie anfordern wollten.
Dies ist eine Erklärung des Codes, den ich oben eingefügt habe.
Was jetzt passiert, ist, dass die PHP-Datei und die Apache-htaccess-Datei miteinander verheiraten; Ich muss Apache sagen "Stoppt den Umleitungsprozess, wenn der Referer, der gerade den Aufruf von wp-content/uploads/gravity_forms/* gemacht hat, test_script.php ist" ... macht das mehr Sinn?
Also, was macht Ihre 'get_site_url(). $ c' generieren? wahrscheinlich hast du php umleiten von P-> Q, und dann springt dein htaccess direkt zurück mit 'Q-> P' –
Hey Marc - get_site_url(). $ c ist wörtlich die URL, auf die der Benutzer anfänglich zuzugreifen versuchte. Also auf meinem localhost-Rechner wird die literale URL: "http: // localhost/cmssystem46/wp-content/uploads/gravity_forms/' –
MustafaG
Ich sollte klar sein: auf der Adressleiste des Browsers des Browsers ändert sich die URL nie während dieser Umleitungen. Dies sind alles interne Weiterleitungen. – MustafaG