Ich versuche, die Modrewrite-Regeln das Verzeichnis überspringen zu lassen vip
. Ich habe eine Reihe von Dingen ausprobiert, wie Sie unten sehen können, aber ohne Erfolg.
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
#RewriteRule ^vip$ - [PT]
RewriteRule ^vip/.$ - [PT]
#RewriteCond %{REQUEST_URI} !/vip
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Wie kann ich modrewrite dazu bringen, das /vip/
Verzeichnis vollständig zu ignorieren, sodass alle Anforderungen direkt an den Ordner übergeben werden?
Aktualisieren:
Als Punkte der Klarheit:
- Es wird auf Dreamhost gehostet
- Die Ordner befinden sich in einem WordPress-Verzeichnis
- Der Ordner / vip / enthält ein Webdav .htaccess usw. (obwohl ich dies nicht für wichtig halte
apache
mod-rewrite
user24557
quelle
quelle
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
diesen stackoverflow.com/a/12575089/516748Antworten:
Versuchen Sie, dies vor andere Regeln zu stellen.
Es wird mit jedem URI-Anfang übereinstimmen
vip
.-
Mittel tun nichts.L
bedeutet, dass dies die letzte Regel sein sollte; ignoriere alles, was folgt.NC
bedeutet kein Fall (also wird auch "VIP" abgeglichen).Beachten Sie, dass es mit jedem Anfang übereinstimmt
vip
. Der Ausdruck^vip$
würdevip
aber nichtvip/
oder übereinstimmenvip/index.html
. Das$
könnte dein Untergang gewesen sein. Wenn Sie es wirklich richtig machen wollen, möchten Sie vielleicht mitmachen,^vip(/|$)
damit Sie nicht übereinstimmenvip-page.html
quelle
RewriteRule ^vip/? - [L,NC]
, um sich um das Problem des Schrägstrichs zu kümmern?^vip
. Es würde mit "vip" übereinstimmen, gefolgt von einem Schrägstrich (vielleicht) und einigen anderen Zeichen (vielleicht). Wir möchten "vip" genau (^vip$
) oder eine beliebige Zeichenfolge, die mit "vip /" (^vip/
) beginnt, zuordnen .RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d
nicht funktionieren. Das betreffende Verzeichnis verfügt über einen speziellen .htaccess, der einen Fehler verursacht. Dasselbe gilt für ein kennwortgeschütztes Verzeichnis.Dies besagt, wenn es sich um eine vorhandene Datei oder ein Verzeichnis handelt, berühren Sie diese nicht. Sie sollten auf site.com/vip zugreifen können und es sollte keine Umschreiberegel stattfinden.
quelle
Der Code, den Sie hinzufügen, und alle Antworten, die Rewrite-Regeln / -Bedingungen enthalten, sind nutzlos! Der Standard-WordPress-Code macht bereits alles, was Sie brauchen sollten:
In diesen Zeilen steht: "Wenn es sich NICHT um eine vorhandene Datei (
-f
) oder ein vorhandenes Verzeichnis (-d
) handelt, geben Sie diese an WordPress weiter. Das Hinzufügen zusätzlicher Regeln, egal wie spezifisch oder gut sie sind, ist überflüssig - Sie sollten bereits von den WordPress-Regeln abgedeckt sein!"Warum arbeiten sie nicht ???
Das
.htaccess
imvip
Verzeichnis gibt einen Fehler aus. Das gleiche passiert, wenn Sie ein Verzeichnis mit einem Passwort schützen.Hier ist die Lösung:
Fügen Sie diese Zeilen vor dem WordPress-Code ein und erstellen Sie dann /err.txt. Auf diese Weise wird es, wenn es auf Ihr WebDAV (oder kennwortgeschütztes Verzeichnis) stößt und fehlschlägt, in diese Datei verschoben und von der vorhandenen Standard-WordPress-Bedingung (
RewriteCond %{REQUEST_FILENAME} !-f
) erfasst .quelle
Zusammenfassend ist die endgültige Lösung:
Ich habe mehr über die Ursache dieses Problems in meiner speziellen Situation gepostet, einschließlich Wordpress und WebDAV auf Dreamhost, von denen ich erwarte, dass viele andere auf meiner Website sind .
quelle
Sie haben erwähnt, dass Sie bereits eine .htaccess-Datei in dem Verzeichnis haben, das Sie ignorieren möchten - Sie können verwenden
In diesem .htaccess, um die Verwendung von mod_rewrite zu beenden (nicht sicher, ob Sie mod_rewrite in diesem Ordner verwenden, wenn dies der Fall ist, hilft dies nicht, da Sie es nicht deaktivieren können).
quelle
Versuchen Sie, diesen Teil Ihres Codes zu ersetzen:
...mit den folgenden:
Das sollte Abhilfe schaffen.
quelle
ist der Weg, das zu tun.
quelle
Ich hatte das gleiche Problem mit WordPress und stellte fest, dass das Problem damit zusammenhängt, dass für 401- und 403-Fehler kein geeigneter Handler vorhanden ist.
Diese Bedingungen sollen die URL vorhandener Ordner bereits nicht neu schreiben, erledigen jedoch nicht ihre Aufgabe für kennwortgeschützte Ordner. In meinem Fall wurde das Problem durch Hinzufügen der folgenden zwei Zeilen zu meinem Stammverzeichnis .htaccess behoben:
Natürlich müssen Sie die Datei /misc/myerror.html erstellen.
quelle
Das funktioniert ...
Aber stellen Sie sicher, dass es die erste Regel danach ist
RewriteEngine on
dh
quelle
In meinem Fall war die Antwort von Brentonstrin (und ich sehe, Matdumsa hatte auch die gleiche Idee) die richtige ... Ich wollte ihre Antworten abstimmen, aber da ich hier neu bin, habe ich keinen "Ruf", also habe ich eine vollständige Antwort zu schreiben, um zu betonen, was meiner Meinung nach der wahre Schlüssel hier ist.
Einige dieser Antworten würden die Verwendung der WordPress-Datei index.php erfolgreich verhindern ... In vielen Fällen liegt der Grund dafür darin, dass es ein echtes Verzeichnis mit echten Seiten gibt, die Sie direkt anzeigen möchten, und das
Linien kümmern sich bereits darum, so dass die meisten dieser Lösungen in einem Fall wie meinem eine Ablenkung darstellen.
Der Schlüssel war Brentonstrines Erkenntnis, dass der Fehler ein sekundärer Effekt war, der durch den Passwortschutz in dem Verzeichnis verursacht wurde, das ich direkt anzeigen wollte. Durch das Einfügen der
Zeilen und Erstellen von Fehlerseiten (Ich habe tatsächlich err401.html und err403.html erstellt und informativere Fehlermeldungen erstellt) Ich habe die Generierung der 404-Antwort gestoppt, als keine Seite gefunden werden konnte, die für die 401-Authentifizierung angezeigt werden konnte, und dann funktionierte der Ordner wie erwartet ... zeigt einen Apache-Anmeldedialog, dann den Inhalt des Ordners oder bei einem Fehler meine Fehlerseite 401.
quelle
Ich bin mir nicht sicher, ob ich Ihr Ziel verstehe, aber das Folgende könnte das tun, wonach Sie suchen?
Dadurch wird eine URL wie http://www.example.com/vip/fred.html ohne / vip neu geschrieben.
quelle