Ich möchte umleiten www.example.com
zu example.com
. Der folgende htaccess-Code macht dies möglich:
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
Aber gibt es eine Möglichkeit, dies generisch zu tun, ohne den Domainnamen fest zu codieren?
apache
mod-rewrite
url-rewriting
Tiefbrunnen
quelle
quelle
Antworten:
Wie Michael, außer dass dieser funktioniert: P.
quelle
RewriteEngine On
Vorläufer, damit es funktioniert.http://www.domain.com/
zuhttp://domain.com//
. Sie sollten hinzufügen ,/
um dieRewruteRule
. Das funktioniert bei mirRewriteRule ^/(.*)$ http://%1/$1 [R=301,L]
.http://domain.com//
mit den doppelten Schrägstrichen umgeleitet wurde . Also habe ich es getanRewriteRule ^(.*)$ http://%1$1 [R=301,L]
und es scheint so weit zu funktionierenAber wenn wir dies für separate http und https tun müssen:
quelle
RewriteCond %{HTTPS} off RewriteCond %{HTTP_HOST} ^www.example.com/$ [NC] RewriteRule ^(.*)$ http://www.example.com [R=301,L]
.../
..htaccess
sollten Sie keinen zusätzlichen Schrägstrich bekommen. (Nur um zu beachten, wenn Sie diese Umleitung in der Serverkonfiguration durchführen, sollten Sie wahrscheinlich zunächst nicht mod_rewrite verwenden ... Ein einfacher mod_aliasRedirect
im entsprechenden vhost-Container wäre effizienter und weniger fehleranfällig.)Umleiten von nicht-www zu www (beide: http + https)
quelle
RewriteEngine On
undRewriteBase /
, aber sonst hat es gut funktioniert.Wenn Sie dies in der Datei httpd.conf tun möchten, können Sie dies ohne mod_rewrite tun (und anscheinend ist es besser für die Leistung).
Ich habe diese Antwort hier erhalten: /server/120488/redirect-url-within-apache-virtualhost/120507#120507
quelle
Hier sind die Regeln, um eine www-URL zu no-www umzuleiten:
Hier sind die Regeln, um eine No-www-URL zu www umzuleiten:
Beachten Sie, dass ich das
NE
Flag verwendet habe, um zu verhindern, dass Apache der Abfragezeichenfolge entgeht. Ohne dieses Flag ändert Apache die angeforderte URLhttp://www.example.com/?foo%20bar
inhttp://www.example.com/?foo%2250bar
quelle
Das
RewriteCond
erfasst alles in derHTTP_HOST
Variablen nach demwww.
und speichert es in%1
.Der
RewriteRule
erfasst die URL ohne den führenden/
und speichert sie in$1
.quelle
sans leading "/"
- In.htaccess
(wie in der Frage angegeben) gibt es keine Führung/
, daher stimmt das Muster nie überein und die Umleitung erfolgt nie. (In einem Server- oder Virtualhost- Kontext gibt es nur einen führenden Schrägstrich .) Wenn Sie danach mod_rewrite-Anweisungen haben, benötigen Sie dasL
Flag.Versuche dies:
Wenn der Host mit www beginnt, kleben wir den gesamten Host an den Anfang der URL und entfernen dann das "www".
quelle
.htaccess
. In einem Verzeichniskontext (.htaccess
) sollten Sie das erste ändernRewriteRule
, umRewriteRule ^(.*)$ %{HTTP_HOST}/$1 [C,DPI]
Folgendes zu lesen: (erfordert Apache 2.2.12+). Beachten Sie das Hinzufügen des Schrägstrichs und desDPI
Flags (Pfadinformationen verwerfen), um zu verhindern, dass ein Teil des URL-Pfads scheinbar dupliziert wird (was tatsächlich "Pfadinfo" ist), wie in früheren Kommentaren angegeben. Es gibt jedoch einfachere Richtlinien - wie in den anderen Antworten beschrieben.Vollständiger generischer WWW-Handler, http / https
Ich habe keine vollständige Antwort gesehen. Ich benutze dies, um die WWW-Aufnahme zu handhaben.
Bitte lassen Sie mich wissen, wie das funktioniert oder ob ich eine Lücke hinterlassen habe.
quelle
www
auf Nicht- umzuleitenwww
. Sie erzwingen die Aufnahme vonwww
.Ich finde, es kann eine Menge Fehlinformationen über htaccess-Weiterleitungen geben. Stellen Sie zunächst sicher, dass Ihre Site unter Unix mit Apache und nicht auf einem Windows-Host ausgeführt wird, wenn Sie erwarten, dass dieser Code funktioniert.
(Stellen Sie jedoch sicher, dass zwischen den einzelnen Textzeilen keine Zeilenabstände vorhanden sind. Ich habe einen zusätzlichen Abstand zwischen den Zeilen hinzugefügt, damit es in diesem Fenster in Ordnung ist.)
Dies ist ein Codeausschnitt, mit dem die WWW-Version Ihrer Website auf die http: // - Version umgeleitet werden kann. Es gibt auch andere ähnliche Codes, die verwendet werden können.
quelle
Für Unterordner
quelle
Für diejenigen, die auf die gesamte Site OHNE das Präfix 'www' zugreifen müssen .
Stellen Sie sicher, dass Sie dies der folgenden Datei hinzufügen
quelle
protossl
Umgebungsvariable nicht fest (dies ist keine Standard- / Servervariable). Dies ist immer leer und wird immer an weitergeleitethttp
. (Die Idee hinter der Einstellungprotossl
früher im Code ist, wenn Sie das Protokoll bei der Umleitung beibehalten möchten. In diesen Tagen sollten Sie jedoch wahrscheinlich diehttps
ganze Zeit umleiten .)Verwenden von .htaccess zum Umleiten zu www oder nicht www:
Fügen Sie einfach die folgenden Codezeilen in Ihre Hauptdatei .htaccess ein. In beiden Fällen ändern Sie einfach domain.com in Ihren eigenen Hostnamen.
Weiterleiten an www
Weiterleiten an Nicht-WWW
Ändern Sie DOT in =>. !!!
quelle
Ich habe die obige Regel verwendet, um www zu no www weiterzuleiten, und es funktioniert gut für die Homepage, jedoch auf den internen Seiten, die sie an /index.php weiterleiten
Ich habe diese andere Regel in meiner .htaccess-Datei gefunden, die dies verursacht, bin mir aber nicht sicher, was ich dagegen tun soll. Anregungen wäre toll:
quelle
www bis nicht www mit https
quelle
Wenn Sie
www
beidehttp
und entfernen möchtenhttps
, verwenden Sie Folgendes:Dies leitet Non ssl weiter
zu
Und SSL
zu
Auf Apache können
2.4.*
Sie dies mit einerRedirect
with-if
Direktive erreichen.quelle
Verwenden Sie: Javascript / jQuery
Oder .htaccess:
und die PHP-Methode:
Ajax
quelle
Nur so konnte ich es zum Laufen bringen ...
quelle
Wenn Sie www erzwingen. Versuchen Sie dann, in url oder ssl prototcol zu erzwingen, mögliche Variationen in der htaccess-Datei zu verwenden, z.
quelle
RewriteCond %{SERVER_PORT} 80
schlage ich vor, eine solche universellere Prüfung zu verwenden:RewriteCond %{HTTPS} off
Die ausgewählte Antwort und viele andere Lösungen hier haben den Teil der URL nach / gelöscht, so dass er im Grunde immer zur Hauptdomäne umgeleitet wurde, zumindest für mich. Also füge ich ein Arbeitsprobe hinzu, das den vollständigen Pfad nach dem Schrägstrich berücksichtigt.
quelle
Alternativer Ansatz, wenn die Anpassung von .htaccess keine ideale Option ist:
Ich habe einen einfachen Weiterleitungsserver für die öffentliche Verwendung erstellt. Fügen Sie einfach einen A- oder CNAME-Datensatz hinzu:
Weitere Informationen: https://simpleredirect.net
quelle
Ich bin nicht sicher, warum du www entfernen willst. Aber die umgekehrte Version wäre:
Und der Vorteil dieses Skripts ist: Wenn Sie so etwas wie test.whattimein.com oder eine andere (Umgebung zum Entwickeln / Testen) haben, wird U nicht in die ursprüngliche Umgebung umgeleitet.
quelle
Dies wurde aktualisiert, um mit Apache 2.4 zu funktionieren:
Die einzige Änderung gegenüber Michael besteht darin, die zu entfernen
[NC]
, die den Fehler "AH00665" erzeugt:quelle
RewriteCond %{REQUEST_FILENAME} !-f [NC]
). DasNC
Flag macht in den obigen Ausführungen kaum einen Unterschied. Der Grund, warum dasNC
Flag hier verwendet werden sollte , besteht darin, den kleinen Teil des Bot-Verkehrs zu erfassen, der (fälschlicherweise) einen Hostnamen in Großbuchstaben sendet.Wenn localhost hinzugefügt, ignorieren Sie die Umleitung (für Entwicklungszwecke in der lokalen Umgebung). Wenn nicht localhost AND (nicht https ODER www), leiten Sie zu https und non-www um.
quelle
Hallo, Sie können folgende Regeln für Ihre htaccess-Datei verwenden:
quelle