Redirect 301 aus einem Verzeichnis in einer Einzigen Datei
Ich bin habend ein wenig Mühe, herauszufinden, etwas, das einfach sein sollte. Ich möchte eine 301-Weiterleitung alles in einem Verzeichnis in einer einzigen Datei in einen neuen Speicherort.
In meinem .htaccess
ich habe bereits versucht die folgenden...
Redirect 301 /myDir/http://www.mydomain.com/myNewDir/index.html
und diese...
Redirect 301 /myDir/http://www.mydomain.com/myNewDir/
und diese...
Redirect 301 /myDir http://www.mydomain.com/myNewDir
Den problem ist, dass jeder von denen sind einfach Zuordnung der einzelnen Datei innerhalb /myDir/
und anfügen an das Ende der Ziel-URL.
Danach Googeln, sah ich etwas, das sagte, dies zu tun...
Redirect 301 ^/myDir(.*) http://www.mydomain.com/myNewDir
Aber das macht einfach das gleiche... es ist die Kartierung der vorhandenen Speicherort der Datei an das Ende der URL.
War es leicht finden viele ".htaccess redirect" tutorials online, aber Sie scheinen, um nur die offensichtlichsten Beispiele wie 'one-to-one-mapping' oder 'eins-zu-eins-directory-mapping'. Diese tutorials scheinen auch zu vernachlässigen, die die verschiedenen relevanten Datei-Richtlinien und wie man Sie richtig benutzt.
Dieser bestimmten hosting-account ist Müll und hat auch FrontPage-Erweiterungen installiert. Mod-rewrite versagt (bricht die ganze Seite) noch die Redirect 301
Linien sind einwandfrei funktioniert. So lange, bis ich mich bewegen kann diesem neuen (nicht-FrontPage-Website in einen robusteren hosting-Konto, werde ich brauchen, zu halten mit den Redirect 301
one-liner.
Wie kann ich einfach eine Redirect 301
umleiten alles innerhalb /myDir/
zu den einer einzigen Datei sich an /myNewDir/index.html
? (Ich würde lieber mit nur /myNewDir/
wenn möglich). Freundlicherweise erklären, im detail, die Datei-Richtlinien in Ihrer Lösung.
UPDATE:
Zuvor akzeptierte Antwort ist nicht funktioniert.
Beispiel:
RedirectMatch 301 /myDir1/(.*) http://mydomain.org/newpath/myDir1/index.html
...gibt "Too many redirects occurred trying to open" Fehler.
Dies ist, weil /myDir1/(.*)
passt überall innerhalb der Zeichenfolge, so dass, wenn die Ziel-URL enthält /myDir1/
überall, nicht nur die Wurzel, es wird umgeleitet in eine Fiese Masche.
Siehe meine eigene Antwort gepostet für die richtige Lösung.
InformationsquelleAutor Sparky | 2011-10-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand ich die Antwort in einem meiner alten Projekte.
Redirect 301
ist alles falsch. Ich wollte wirklichRedirectMatch 301
statt.Erklärung(en):
http://httpd.apache.org/docs/1.3/mod/mod_alias.html#redirectmatch
http://www.zytrax.com/tech/web/regex.htm
...
...
Auch erwähnenswert, dass, wenn Sie zuvor eine 301-Weiterleitung geht an die falsche Stelle (das Anhängen der Seite, um die Ziel-URL), müssen Sie möglicherweise Ihren browser-cache leeren, bevor Sie abholen wird die neue Regel aus .htaccess.
Neben Russ' Kommentar: der Probleme bewusst Sein, die auftreten, wenn
301
("dauerhaft verschoben"). Bessere Nutzung302
,303
,307
oder gar nichts (da optional), wenigstens für Testzwecke.InformationsquelleAutor Sparky
Versuchen Sie dies:
Referenz: http://httpd.apache.org/docs/1.3/mod/mod_alias.html#redirectmatch.
So weit wie Klammern um .* betroffen sind, RedirectMatch verwendet standard-reguläre Ausdrücke, was bedeutet, dass Sie erfassen die erkannten Zeichen und verwenden Sie Sie in Ihrer redirect-Regel refferencing Sie als $1, $2, usw.
In regulären Ausdrücken * bedeutet eine beliebige Anzahl von Wiederholungen des vorhergehenden Zeichens. . - steht für beliebige Zeichen. So die Kombination .* sagt, dass dieses Muster eine beliebige Anzahl von beliebigen Zeichen. Daher * . * bedeutet, dass dieses Muster match /myDir und /myDir/und noch /myDir/test.html. So * . * kann auch verwendet werden,
.*
entspricht, Sie alle Dateien. Aber können Sie ausbauen? Alle Variationen? Warum ist(.*)
auch arbeiten? Ein link zur online-Dokumentation, die auf dieser? Dankeschön!Siehe: httpd.apache.org/docs/1.3/mod/mod_alias.html#redirectmatch Zu Klammern .* RedirectMatch verwendet standard-reguläre Ausdrücke, was bedeutet, dass Sie erfassen die erkannten Zeichen und verwenden Sie Sie in Ihrer redirect-Regel refferencing Sie als $1, $2, usw.
In regulären Ausdrücken * bedeutet eine beliebige Anzahl von Wiederholungen des vorhergehenden Zeichens.
.
- kennzeichnet jede characher. So die Kombination .* sagt, dass dieses Muster eine beliebige Anzahl von beliebigen Zeichen. Daher * . * bedeutet, dass dieses Muster match /myDir und /myDir/ und noch /myDir/test.html. So * . * kann auch verwendet werden.InformationsquelleAutor dfsq