Wie zu stoppen .htaccess-Schleife
Ich bin nicht Experte in htaccess-Dateien und ich versuche, etwas, das scheint sehr einfach, aber ich habe nicht in der Lage, es zu tun.
Habe ich gesucht und endlich hier etwas finden könnte arbeiten für meinen Gebrauch hat es aber nicht. Der code ist unten.
Hier ist ein Beispiel für das, was ich brauche:
http://localhost/Test/TestScript.php
zu zeigen: http://localhost/Test/TestScript/
mit dem Skript in der ursprünglichen stellen.
Dies sind meine Regeln (Kopiert):
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /Test
## hide .php extension
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]
## To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_FILENAME}.php [L]
Diese Regel geben:
Forbidden You don't have permission to access ".../Test/TestScript.php on this server."
So geändert, Letzte Zeile:
RewriteRule ^.* http://localhost/Test/TestScript.php [L]
Aber jetzt diese Fehlermeldung erhalten:
The page isn't redirecting properly
Hoffen, dass geniale Menschen in diesem Ort, der mir helfen kann. Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Regel-Satz endet in einer Schleife. Mal sehen:
Die Anfrage
http://localhost/Test/TestScript.php
weitergeleitethttp://localhost/Test/TestScript/
, für den browser zu zeigen, und schließlich versucht abgebildet werden wieder auf die ursprüngliche Ressource.Dem [L] flag in der Regel nicht beenden Sie den Prozess, als viele Leute denken. Die rewriting engine durchläuft den kompletten Regelsatz, Regel ist Regel, und bei einer bestimmten Regel entspricht, durchläuft es die entsprechenden Bedingungen, wenn überhaupt. Dieser Prozess wiederholt sich für jede Anforderung und Regeln erzeugen neue Anforderungen, es ist einfach eine unendliche Schleife eingeben.
Dass das, was die Meldung "Die Seite nicht umgeleitet wird richtig" bedeutet in diesem Fall.
Hier sind Die Technischen Details dieser Prozess
Einige Lösungen:
Ich) Die besten und weitere praktische Option ist die Nutzung direkt an die "hübsche" URL in die erste Anforderung, das mapping automatisch an die Ressource. Dies ist ein ein-Schritt-Prozess, wo die "hübsche" URL wird immer angezeigt, in der Adressleiste des Browsers. Einer der Vorteile dieser option ist, dass nichts in der URI-Pfad der eingehenden URL hat, zu existieren.
http://localhost/Test/TestScript/
http://localhost/Test/TestScript.php
II) Wenn das nicht möglich ist, weil es gibt schon links, die direkt auf die Ressource, eine Möglichkeit zu zeigen, die "hübsche" URL aber bekomme immer noch die Daten aus der ursprünglichen Anfrage, ist sichtbar und permanent redirect ersten Strippen der Erweiterung um die Anzeige "schöne" URL, und dann einen internen rewrite wieder auf die ursprüngliche Ressource.
http://localhost/Test/TestScript.php
,http://localhost/Test/TestScript/
"schöne" URL,http://localhost/Test/TestScript.php
, die ursprüngliche Anforderung.HINWEISE:
mod_rewrite
aktiviert ist.Wahrscheinlich der loop ist aufgrund eines Fehlers in .htaccess-Bearbeitung, nicht alles, was Sie codiert haben. (Die Macke ist so schlecht, dass eine einfache .htaccess mitaus eine Schleife ist noch mehr überrascht, als ein mit:-) Wenn es eine Schleife, nicht nur sofort angenommen, Sie haben got irgendeine Art von Logik-Fehler oder haben miscoded etwas.
In .htaccess-Regeln (im Gegensatz zu den gleichen Regeln in der httpd.conf) die [L]ast-flag beginnt an der Spitze. (Siehe den loop-Möglichkeiten aktiviert wird?-)
Einige typische Lösungen (neben den oben genannten) sind:
Option 1: Verwenden Sie die [ENDE] - flag, anstatt die [L]ast-Flagge auf Linien, wo Sie wirklich die Absicht haben, eine vollständige und sofortige Ausstieg aus der .htaccess-Datei in diesem Unterverzeichnis. (Problem ist, die [ENDE] - flag ist nur verfügbar in der neueren [version 2.3.9 und später] die Apachen und gar nicht "zurückfallen" in den früheren Versionen.)
Option 2: Fügen Sie boilerplate-code, wie dies an der Spitze von jedem .htaccess-Dateien:
Ich bin kein Experte mit .htaccess aber nicht Sie müssen die Umleitung irgendwann?
Wie: redirect http://www.yoursite.com/test/testscript/
Wieder ich bin kein Experte. Aber vielleicht versuchen Sie Auschecken dieses: http://forums.techguy.org/web-design-development/717997-solved-htaccess-redirect-loop-problem.html