Versuchen zu bekommen
www.example.com
direkt zu gehen
www.example.com/store
Ich habe mehrere Codebits ausprobiert und keiner funktioniert.
Was ich probiert 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?
Sie können eine Umschreibungsregel verwenden, die ^ $ verwendet, um den Stamm darzustellen und diesen in Ihr/store-Verzeichnis umzuschreiben.
RewriteEngine On
RewriteRule ^$ /store [L]
Ich war überrascht, dass niemand dies erwähnte:
RedirectMatch ^/$ /store/
Grundsätzlich wird der Stamm und nur die Stamm-URL umgeleitet .. Die Antwort stammt von this link
Versuche dies:
RewriteEngine on
RewriteCond %{HTTP_Host} ^example\.com$
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
RewriteRule ^$ store [L]
Wenn Sie eine externe Weiterleitung wünschen (wodurch der Besuchsbrowser die umgeleitete URL anzeigt), setzen Sie auch dort das Flag R
:
RewriteRule ^$ /store [L,R=301]
Hier habe ich zu einem Unterverzeichnis umgeleitet. Dies hat es unsichtbar gemacht und lässt dennoch Anforderungen zu, die mit einer vorhandenen Datei oder was auch immer übereinstimmen.
RewriteEngine on
RewriteCond %{HTTP_Host} ^(www.)?site.com$
RewriteCond %{REQUEST_URI} !^/subdir/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /subdir/$1
RewriteCond %{HTTP_Host} ^(www.)?site.com$
RewriteRule ^(/)?$ subdir/index.php [L]
Ändern Sie site.com und das Unterverzeichnis mit Ihren Werten.
Um eine unsichtbare Umleitung vom Stamm zum Unterordner festzulegen, können Sie die folgende RewriteRule in /root/.htaccess verwenden:
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/subfolder
RewriteRule ^(.*)$ /subfolder/$1 [NC,L]
Die obige Regel leitet den Browser intern um von:
zu
Und
zu
während der Browser im Stammordner bleibt.
Eine weitere Alternative, wenn Sie die URL umschreiben und die ursprüngliche URL ausblenden möchten:
RewriteEngine on
RewriteRule ^(.*)$ /store/$1 [L]
Wenn Sie beispielsweise http://www.example.com/product.php?id=4
eingeben, wird die Datei transparent bei http://www.example.com/store/product.php?id=4
geöffnet, ohne jedoch dem Benutzer die vollständige URL anzuzeigen.
Dies schien die einfachste Lösung zu sein:
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/$
RewriteRule (.*) http://www.example.com/store [R=301,L]
Ich habe Umleitungsschleifen mit einigen anderen Lösungen erhalten.
Ich verstehe deine Frage nicht ...
Wenn Sie jede Anfrage in einen Unterordner umleiten möchten:
RewriteRule ^(.*)$ shop/$1 [L,QSA]
http://www.example.com/* -> wwwroot/store/*
Wenn Sie in einen Unterordner umleiten möchten, der den Domänennamen enthält
RewriteCond %{HTTP_Host} ([^\.]+\.[^\.]+)$
RewriteRule ^(.*)$ %1/$1 [L,QSA]
http://www.example.com/* -> wwwroot/example.com/*
Ich habe festgestellt, dass es wichtig ist, den Umfang der Umleitung auf das Stammverzeichnis .. zu beschränken, um eine zirkuläre Umleitung zu vermeiden.
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/$
RewriteRule (.*) http://www.example.com/store [R=301,L]
Die meisten der oben genannten Lösungen sind korrekt, jedoch fehlt ihnen die Transparenz der Weiterleitung.
In meinem Fall wollte ich beim Besuch von www.example.com in das Unterverzeichnis / store umgeleitet werden, ohne die URL auf www.example.com/store zu aktualisieren. (Alles, was ich möchte, ist, den Seitencode aus diesem Verzeichnis zu erhalten). Wenn dies der Fall ist, funktioniert die untenstehende Lösung perfekt.
RewriteEngine on
RewriteCond %{HTTP_Host} example\.com [NC]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^(.*)$ /store/$1 [L]
source: http://wiki.dreamhost.com/Transparently_redirect_your_root_directory_to_a_subdirectory
Früher verwende ich den folgenden Code, der korrekt funktioniert, um die Stamm-URL jeder meiner Domains/Unterdomänen in ihre entsprechenden Unterverzeichnisse umzuleiten, die genau wie die folgende Sub-/Domain benannt sind:
RewriteCond %{HTTP_Host} ^sub1.domain1.com
RewriteCond %{REQUEST_URI} !subs/sub1.domain1.com/
RewriteRule ^(.*)$ subs/%{HTTP_Host}/$1 [L,QSA]
RewriteCond %{HTTP_Host} ^sub2.domain1.com
RewriteCond %{REQUEST_URI} !subs/sub1.domain2.com/
RewriteRule ^(.*)$ subs/%{HTTP_Host}/$1 [L,QSA]
RewriteCond %{HTTP_Host} ^sub1.domain2.com
RewriteCond %{REQUEST_URI} !subs/sub1.domain2.com/
RewriteRule ^(.*)$ subs/%{HTTP_Host}/$1 [L,QSA]
RewriteCond %{HTTP_Host} ^sub2.domain2.com
RewriteCond %{REQUEST_URI} !subs/sub2.domain2.com/
RewriteRule ^(.*)$ subs/%{HTTP_Host}/$1 [L,QSA]
Wenn ich jedoch weitere Subs oder Domains hinzufügen möchte, muss dies im obigen Code hinzugefügt werden. Es sollte viel bequemer sein, die Arbeit zu vereinfachen wie Platzhalter (*) - wie folgt:
RewriteCond %{HTTP_Host} ^sub
RewriteCond %{REQUEST_URI} !/subs/
RewriteRule ^(.*)$ subs/%{HTTP_Host}/$1 [L,QSA]
Wenn also weitere Subdomains/Domains hinzugefügt werden, solange der Subdomain-Name ein Präfix von sub hat (wie :₃.domain1.com, sub1.domain3.com usw.), bleibt der Code gültig.
Ich denke, die Hauptprobleme mit dem von Ihnen geposteten Code sind:
die erste Zeile stimmt mit einem Host überein, der streng mit sample.com beginnt, daher stimmt www.sample.com nicht überein.
die zweite Zeile benötigt mindestens einen Buchstaben, gefolgt von www.sample.com, der ebenfalls nicht übereinstimmt (warum haben Sie das erste W entkommen?)
keine der enthaltenen Regeln wird auf die von Ihnen in Ihrem Ziel angegebene URL umgeleitet (Plus, Probe ist als Beispiel falsch geschrieben, aber das ist nicht relevant).
Hier sehen Sie den Code, den Sie derzeit haben:
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_Host} ^sample.com$
RewriteRule (.*) http://www.sample.com/$1 [R=301,L]
RewriteCond %{HTTP_Host} ^(.+)\www.sample\.com$
RewriteRule ^/(.*)$ /samle/%1/$1 [L]
Ein bisschen googeln, gibt mir diese Ergebnisse:
RewriteEngine On
RewriteBase /
RewriteRule ^ index. (. *)? $ http://domain.com/subfolder/ [r = 301]Dadurch wird jeder Versuch umgeleitet Greifen Sie auf eine Datei namens index.something zu .__ zu. Dein Unterordner, ob die Datei existiert oder nicht.
Oder probiere es aus:
RewriteCond% {HTTP_Host} ! ^ www.sample.com $ [NC]
RewriteRule ^ (. *) $ % {HTTP_Host}/samlse/$ 1 [R = 301, L]
Ich habe in der .htaccess-Datei nicht viel weitergeleitet, daher bin ich mir nicht sicher, ob dies funktioniert.
Es gibt zwei Möglichkeiten, um dies zu erreichen: 1. Erstellen Sie eine .htaccess
-Datei im Stammordner wie unter (ersetzen Sie einfach example.com und mein_dir durch Ihre entsprechenden Werte):
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_Host} ^(www.)?example.com$
RewriteCond %{REQUEST_URI} !^/my_dir/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /my_dir/$1
RewriteCond %{HTTP_Host} ^(www.)?example.com$
RewriteRule ^(/)?$ my_dir/index.php [L]
</IfModule>
Verwenden Sie RedirectMatch, um nur die Stamm-URL "/" in einen anderen Ordner oder eine andere URL umzuleiten.
RedirectMatch ^/$ http://www.example.com/my_dir
versuchen Sie, die folgenden Zeilen in htaccess zu verwenden
Hinweis: Möglicherweise müssen Sie überprüfen, wie der Name von default.html lautet
default.html ist die Datei, die standardmäßig im Stammordner geladen wird.
RewriteEngine
Redirect /default.html http://example.com/store/
Dies versucht das Unterverzeichnis, wenn die Datei nicht im Stammverzeichnis vorhanden ist. Benötigt dies, da ich eine grundlegende .html-Website verschoben habe, die erwartet, auf der Root-Ebene ausgeführt zu werden und in ein Unterverzeichnis verschoben zu werden. Funktioniert nur, wenn alle Dateien leer sind (kein .htaccess-Trickery im Unterverzeichnis möglich). Nützlich für verknüpfte Dinge wie css- und js-Dateien.
# Internal Redirect to subdir if file is found there.
RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI} !-s
RewriteCond %{DOCUMENT_ROOT}/subdir/%{REQUEST_URI} -s
RewriteRule ^(.*)$ /subdir/$1 [L]
Ich beantworte die ursprüngliche Frage nicht mit einem Hinweis auf eine andere mögliche Syntax (es gibt viele unter den anderen Antworten), sondern mit dem Hinweis auf etwas, mit dem ich mich einmal befassen musste, brauchte ich eine Weile, um herauszufinden:
What am I doing wrong?
Es besteht die Möglichkeit, dass% {HTTP_Host} nicht oder überhaupt nicht richtig gefüllt wird. Obwohl ich nur gesehen habe, dass es nur auf einem Computer auf einem gemeinsam genutzten Host vorkommt, ist bei einigen benutzerdefinierten Apache 2.2-Patches dies trotzdem möglich.
sie fügen diesen Code einfach in Ihre .htaccess-Datei ein
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /folder/index.php [L]
</IfModule>