Versuchen zu bekommen
www.example.com
direkt zu gehen
www.example.com/store
Ich habe mehrere Codebits ausprobiert und keine funktionieren.
Was ich versucht habe:
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^(.+)\www.example\.com$
RewriteRule ^/(.*)$ /samle/%1/$1 [L]
Was mache ich falsch?
.htaccess
mod-rewrite
redirect
Willi Mentzel
quelle
quelle
Ich war überrascht, dass niemand dies erwähnte:
Grundsätzlich wird der Stamm und nur die Stamm-URL umgeleitet. Die Antwort stammt von diesem Link
quelle
RedirectMatch 301 ^/$ /store/
Versuche dies:
Wenn Sie eine externe Weiterleitung wünschen (wodurch der besuchende Browser die umgeleitete URL anzeigt), setzen Sie dort auch das
R
Flag:quelle
www.example.com
nach der Weiterleitung als URI angezeigt? Wenn nicht, wie würde sich dies ändern?RewriteCond
und die erste einschließenRewriteRule
?/aboveSubDir
wird entweder vom Browser oder vom Server gelöst .Folgendes habe ich verwendet, um in ein Unterverzeichnis umzuleiten. Dies hat es unsichtbar gemacht und ermöglicht immer noch durch Anfragen, die mit einer vorhandenen Datei oder was auch immer übereinstimmen.
Ändern Sie site.com und unterschreiben Sie mit Ihren Werten.
quelle
Um eine unsichtbare Umleitung vom Stammverzeichnis zum Unterordner festzulegen, können Sie die folgende RewriteRule in /root/.htaccess verwenden:
Die obige Regel leitet den Browser intern weiter von:
zu
Und
zu
während der Browser im Stammordner bleibt.
quelle
Eine weitere Alternative, wenn Sie die URL neu schreiben und die ursprüngliche URL ausblenden möchten:
Wenn Sie beispielsweise eingeben
http://www.example.com/product.php?id=4
, wird die Datei transparent geöffnethttp://www.example.com/store/product.php?id=4
, ohne dass dem Benutzer die vollständige URL angezeigt wird.quelle
QSA
(Abfragezeichenfolge anhängen) zu[L]
([L, QSA]
) hinzu, wenn Abfragezeichenfolgen auf die neu geschriebene URL übertragen werden sollen.Dies schien die einfachste Lösung zu sein:
Ich bekam Umleitungsschleifen mit einigen der anderen Lösungen.
quelle
Ich verstehe deine Frage nicht ...
Wenn Sie jede Anforderung in einen Unterordner umleiten möchten:
Wenn Sie zu einem Unterordner mit dem Domänennamen umleiten möchten
quelle
([^\.]+\.[^\.]+)$
die Domain als Unterordnernamen reserviert.Ich habe festgestellt, dass es wichtig ist, den Umfang der Umleitung auf das Stammverzeichnis zu beschränken, um eine zirkuläre Umleitung zu vermeiden. Ich hätte verwendet:
quelle
Die meisten der oben genannten Lösungen sind korrekt, aber allen fehlt die Transparenz der Umleitung.
In meinem Fall wollte ich beim Besuch von www.example.com in das Unterverzeichnis / den Store umgeleitet werden, ohne jedoch die URL zu www.example.com/store zu aktualisieren . (Ich möchte nur den Seitencode aus diesem Verzeichnis abrufen.) In diesem Fall funktioniert die folgende Lösung einwandfrei.
Quelle: http://wiki.dreamhost.com/Transparently_redirect_your_root_directory_to_a_subdirectory
quelle
RewriteRule ^(.*)$ http://otherpage.com/subfolder/$1 [L]
aber es aktualisiert die URLexample
und zu ersetzenstore
.example.com
undotherpage.com
Domains. Wenn ich besuche,example.com
möchte ich, dass der Inhalt vonotherpage.com/subfolder
angezeigt wird, ohne die URL zu aktualisierenZu diesem Zweck kann auch Redirect verwendet werden
Oder Alias für die Zuordnung
Bearbeiten: mod_alias ist nur in httpd.conf anwendbar.
Refrences
quelle
Früher verwende ich den folgenden Code, der korrekt funktioniert, um die Stamm-URL jeder meiner Domänen / Unterdomänen in ihre entsprechenden Unterverzeichnisse umzuleiten, die genau wie die Unterdomäne selbst benannt sind:
Wenn ich jedoch weitere Subs oder Domains hinzufügen möchte, muss dies im obigen Code hinzugefügt werden. Es sollte viel bequemer sein, es so zu vereinfachen, dass es wie ein Platzhalter (*) funktioniert :
Wenn also eine andere Subdomain / Domain hinzugefügt wird, solange der Subdomainname das Präfix sub hat (wie: sub3.domain1.com, sub1.domain3.com usw.), bleibt der Code gültig.
quelle
Ich denke, die Hauptprobleme mit dem Code, den Sie gepostet haben, sind:
Die erste Zeile stimmt auf einem Host überein, der streng mit sample.com beginnt, sodass www.sample.com nicht übereinstimmt.
Die zweite Zeile möchte mindestens ein Zeichen, gefolgt von www.sample.com, das ebenfalls nicht übereinstimmt (warum sind Sie dem ersten w entkommen?).
Keine der enthaltenen Regeln leitet zu der URL weiter, die Sie in Ihrem Ziel angegeben haben (außerdem ist das Beispiel als samle falsch geschrieben, aber das ist irrelevant).
Als Referenz ist hier der Code, den Sie derzeit haben:
quelle
Ein wenig googeln gibt mir folgende Ergebnisse:
Oder versuchen Sie Folgendes:
Ich habe in der .htaccess-Datei nicht viel umgeleitet, daher bin ich mir nicht sicher, ob dies funktionieren wird.
quelle
Zwei Möglichkeiten für mögliche Lösungen, um dies zu erreichen, sind: 1. Erstellen Sie eine
.htaccess
Datei im Stammordner wie unter (ersetzen Sie einfach example.com und my_dir durch Ihre entsprechenden Werte):Verwenden Sie RedirectMatch, um nur die Stamm-URL "/" in einen anderen Ordner oder eine andere URL umzuleiten.
RedirectMatch ^ / $ http://www.example.com/my_dir
quelle
Versuchen Sie, die folgenden Zeilen in htaccess zu verwenden
Hinweis: Möglicherweise müssen Sie den Namen der Datei default.html überprüfen
default.html ist die Datei, die standardmäßig im Stammordner geladen wird.
RewriteEngine
Redirect /default.html http://example.com/store/
quelle
Sie fügen diesen Code einfach in Ihre .htaccess-Datei ein
quelle
Ich beantworte die ursprüngliche Frage nicht, indem ich auf eine andere mögliche Syntax hinweise (es gibt viele unter den anderen Antworten), sondern indem ich auf etwas hinweise, mit dem ich mich einmal befassen musste. Ich habe eine Weile gebraucht, um herauszufinden:
Es besteht die Möglichkeit, dass% {HTTP_HOST} nicht richtig oder überhaupt nicht ausgefüllt wird. Obwohl ich nur gesehen habe, dass dies nur auf einem Computer auf einem gemeinsam genutzten Host auftritt, mit einigen benutzerdefinierten gepatchten Apache 2.2, ist dies dennoch eine Möglichkeit.
quelle
Dadurch wird das Unterverzeichnis ausprobiert, wenn die Datei nicht im Stammverzeichnis vorhanden ist. Ich brauchte dies, als ich eine einfache .html-Website, die voraussichtlich auf Root-Ebene ausgeführt wird, verschoben und in ein Unterverzeichnis verschoben habe. Funktioniert nur, wenn alle Dateien flach sind (kein .htaccess-Trick im Unterverzeichnis möglich). Nützlich für verknüpfte Dinge wie CSS- und JS-Dateien.
quelle