Ich habe einen dedizierten Server mit Apache, auf dem ich einige VirtualHosts eingerichtet habe. Ich habe einen eingerichtet, der sowohl die WWW-Domain als auch die Nicht-WWW-Domain verwaltet.
Meine VH .conf Datei für das www:
<VirtualHost *>
DocumentRoot /var/www/site
ServerName www.example.com
<Directory "/var/www/site">
allow from all
</Directory>
</VirtualHost>
Mit diesem .htaccess
:
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
Gibt es eine einfache Möglichkeit, das WWW auf die Nicht-WWW-Version umzuleiten? Momentan sende ich beide Versionen an dasselbe DocumentRoot
und benutze, .htaccess
aber ich bin mir sicher, dass ich das in der VirtualHost-Datei tun kann.
apache-2.2
mod-rewrite
redirect
virtualhost
Verärgerte Ziege
quelle
quelle
Antworten:
Es stellte sich heraus, dass
mod_rewrite
Regeln in der VirtualHosts-Datei abgesehen von derRewriteBase
Regel in Ordnung sind . Ich endete damit:EDIT: auf anraten von joschi in den kommentaren verwende ich jetzt diese vereinfachte version mit der
Redirect
richtlinie vonmod_alias
:quelle
:80
after) führt dazu,VirtualHost *
dass alles "Verboten" zurückgibt !Seien Sie bei 301-Weiterleitungen sehr vorsichtig, da ein Browser, der die 301-Weiterleitung empfängt, diese standardmäßig dauerhaft speichert. Dies bedeutet, dass Sie die Kontrolle darüber aufgeben, was dieser Browser sieht, wenn er versucht, auf die Domain zuzugreifen
www.example.com
.Siehe zum Beispiel diese Diskussion http://getluky.net/2010/12/14/301-redirects-cannot-be-undon/
Stellen Sie also entweder sicher, dass es nicht zwischengespeichert wird, oder verwenden Sie mod_proxy (ich empfehle mod_proxy).
Wenn Sie dem Benutzer die Änderung der URL in der Adressleiste des Browsers anzeigen möchten, verwenden Sie mod_rewrite:
Wenn die "Weiterleitung" für den Benutzer unsichtbar sein soll, verwenden Sie mod_proxy:
Es sollte beachtet werden, dass mod_proxy, wenn es falsch konfiguriert ist, Ihr Netzwerk beschädigen kann.
quelle
Sie können hinzufügen
ServerAlias example.com
,VirtualHost
aber die Leistung unterscheidet sich von einer Umleitung.Bearbeiten
Da Sie umleiten möchten und keine erweiterten Funktionen benötigen,
Redirect
sollte die Verwendung für Sie ausreichen. Sie würden dasRedirect
unter eine VirtualHost-Direktive stellen.Eine clientseitige Lösung wäre die Verwendung eines
meta refresh
Tags.quelle
www.example.com
zurexample.com
Verwendung dieser Methode umleiten ?ServerName
undServerAlias
. Einer hat example.com und der andere www.example.com. Dann greifen beide DNS-Einträge auf die im selben vhost angegebenen Dokumente zu.Nun, Sie können einen virtuellen Host für den SERVERNAME www.example.com erstellen und ihn mit dem Servernamen example.com auf einen anderen virtuellen Host umleiten lassen
quelle