Wie kann ich sicherstellen, dass meine URLs immer mit www beginnen?

17

Ich möchte sicherstellen, dass Benutzer www.mydomain.comauch dann ankommen, wenn sie über den Alias ​​ankommen mydomain.com. Dies ist so, dass ich die Kontrolle über Cookies auf Subdomains habe und Google eine einzige Domain und keine Vielzahl von URLs sieht.

Wie kann ich das mit Apache machen?

Magnar
quelle
5
Könnte ich Ihnen stattdessen vorschlagen, dies umzukehren und stattdessen mydomain.com durchzusetzen? Das Präfix 'www' ist redundant und völlig unnötig.
Eevee
Cookies werden an alle Subdomains auf mydomain.com gesendet, während ich selbst entscheiden kann, welche Cookies von wo mit www.mydomain.com geladen werden. Beispielsweise kann ich das Hinzufügen von Cookies zu static.mydomain.com vermeiden, so dass Cookies nicht verwendet werden wird nicht für jedes geladene Bild übertragen. Es ist definitiv nicht unnötig.
Magnar
Sie können Google ausdrücklich anweisen, einen einzelnen Verknüpfungsstil zu verwenden. Siehe meine Antwort unten.
Robinicks
Ich habe keinen Mitarbeiter, aber das Hinzufügen dieser Tags wäre hilfreich: redirect redirectmatch mod_alias
Tom
1
Auch wenn dies viel später ist, ist es immer noch relevant. www ist nicht veraltet, da eine Domain ohne Subdomain mehrere Nachteile hat. Siehe yes-www.org/why-use-www für mehrere Gründe, www zu verwenden.
user50849

Antworten:

17
<VirtualHost ip:80>
   ServerName domain.com
   RedirectMatch permanent ^(.*)$ http://www.domain.com$1
</VirtualHost>

<VirtualHost ip:80>
   ServerName www.domain.com

   ... usual config
</VirtualHost>
Dave Cheney
quelle
7
Für eine etwas einfachere Lösung können Sie: "Permanent / ptth: //www.domain.com/ umleiten" und Apache behält das Suffix automatisch bei. (Ich habe http umgekehrt, um den Autolink zu deaktivieren.)
Greg Hewgill
1
Ja wirklich ? Süß, das habe ich nie gewusst. Ich dachte immer, Sie müssten RedirectMatch verwenden, um die nachgestellten Teile des URI beizubehalten
Dave Cheney
4

Fügen Sie dies zu Ihrer httpd.confDatei hinzu:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.mydomain\.com$ [NC]
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R=301,L]
Magnar
quelle
4

Aktivieren Sie die Unterstützung für mod_rewrite und erstellen Sie anschließend eine .htaccess-Datei mit folgendem Inhalt im Stammordner für Ihre Domain:

<IfModule mod_rewrite.c>
   Options +FollowSymLinks
   Options +Indexes
   RewriteEngine On
   RewriteBase /
   RewriteCond %{HTTP_HOST} ^domain\.com$
   RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
</IfModule>
Richard Slater
quelle
Vergessen Sie nicht, den RewriteCond-Test unabhängig von Groß- und Kleinschreibung zu machen ...
Alnitak,
Tun Sie dies nur, wenn Sie aus irgendeinem Grund keinen Zugriff auf Änderungen an der Apache-Konfigurationsdatei haben. .htaccessDateien haben viel Overhead, und Überschreibungen in ihnen machen es noch viel schlimmer.
John Dalton
Die Verwendung von Redirect ist für diese Aufgabe immer der Verwendung von mod_rewrite vorzuziehen.
David Pashley
3

Wenn Sie wirklich möchten, dass Google einen bestimmten Domain-Stil (mit oder ohne www ) verwendet, erstellen Sie ein kostenloses Google Webmaster-Tools- Konto, überprüfen Sie die Inhaberschaft Ihrer Domain (laden Sie eine Datei hoch) und legen Sie Ihre bevorzugte Domain über das Online-Steuerungsfeld fest.

So einfach ist das und Sie müssen keinen serverseitigen Code ändern. Auch eingehende Links mit oder ohne www werden gleich behandelt, wodurch sich der PageRank Ihrer Seiten erhöht.

Links können auf Ihre Site verweisen, indem sie sowohl die WWW- als auch die Nicht-WWW-Version der URL verwenden (zum Beispiel http://www.example.com und http://example.com ). Die bevorzugte Domain ist die Version , die Sie für Ihre Website in den Such wollen Ergebnisse .

Wenn Sie uns Ihren bevorzugten Domainnamen mitteilen, werden wir Ihre Präferenzen bei der Anzeige der URLs berücksichtigen. Es kann einige Zeit dauern, bis diese Änderung in unserem Index vollständig angezeigt wird.

Wenn Sie keine bevorzugte Domain angeben, werden die WWW- und Nicht-WWW-Versionen der Domain möglicherweise als separate Verweise auf separate Seiten behandelt.

Robinicks
quelle
1

Ich hatte das gegenteilige Problem, die Leute gingen zu www.domain.com, wenn ich nur direkt von domain.com aus dienen wollte:

<VirtualHost *:80>
   ServerName domain.com

   ... usual config
</VirtualHost>

<VirtualHost *:80>
   ServerName www.domain.com
   ServerAlias sub.domain.com # can also catch some other subdomains
   ServerAlias *.domain.com # or all previously unmatched domains

   Redirect permanent / http://domain.com/
</VirtualHost>

Wie Greg Hewgill bereits erwähnt hat, ist die Verwendung von Redirect ein bisschen einfacher als die von RedirectMatch. Weitere Informationen finden Sie unter http://httpd.apache.org/docs/2.0/mod/mod_alias.html#redirect .

Tom
quelle