Come posso imporre che i miei URL inizino sempre con www?


17

Voglio garantire che gli utenti arrivino www.mydomain.comanche se arrivano attraverso l'alias mydomain.com. Questo è così che ho il controllo dei cookie sui sottodomini e in modo che Google veda un singolo dominio e non un trambusto di URL.

Come posso farlo con apache?


5
Potrei suggerirti invece di invertire questo, e invece applicare mydomain.com? Il prefisso "www" è ridondante e del tutto inutile.
Eevee,

I cookie vengono inviati a tutti i sottodomini su mydomain.com, mentre posso decidere autonomamente quali cookie vengono caricati da dove con www.mydomain.com. Ad esempio, posso evitare di aggiungere cookie a static.mydomain.com, in modo che i cookie non siano non viene trasmesso per ogni immagine caricata. Non è assolutamente inutile.
Magnar,

Puoi specificamente dire a Google di utilizzare un unico stile di collegamento. Vedi la mia risposta qui sotto.
Robinicks,

Non ho il rappresentante, ma aggiungere questi tag sarebbe utile: reindirizzare redirectmatch mod_alias
Tom

1
Anche se questo è molto più tardi, è ancora rilevante. www non è deprecato, perché un dominio senza sottodominio presenta diversi svantaggi. Vedi yes-www.org/why-use-www per diversi motivi per utilizzare www.
user50849,

Risposte:


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>

7
Per una soluzione leggermente più semplice, puoi: "Reindirizzare permanente / ptth: //www.domain.com/" e apache manterrà automaticamente il suffisso. (Ho invertito http per disabilitare il collegamento automatico.)
Greg Hewgill

1
Veramente ? Dolce, non l'ho mai saputo. Ho sempre pensato che dovessi usare RedirectMatch per preservare le parti finali dell'URI
Dave Cheney,

4

Aggiungi questo al tuo httpd.conffile:

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

4

Abilita il supporto mod_rewrite quindi crea un file .htaccess nella cartella principale per il tuo dominio con il seguente contenuto:

<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>

non dimenticare di rendere insensibile al test RewriteCond ...
Alnitak,

Fallo solo se non hai accesso per apportare modifiche al file di configurazione di Apache per qualche motivo. .htaccessi file hanno un sacco di sovraccarico e le riscritture al loro interno lo rendono molto peggio.
John Dalton,

l'utilizzo di Redirect è sempre preferibile all'uso di mod_rewrite per questa attività.
David Pashley,

3

Se desideri davvero che Google utilizzi uno stile di dominio specifico (con o senza www ), crea un account Google Webmaster Tools gratuito , verifica la proprietà del tuo dominio (carica un file) e imposta il tuo dominio preferito utilizzando il pannello di controllo online.

È così semplice e non è necessario modificare alcun codice lato server, anche i collegamenti in entrata con o senza www saranno trattati allo stesso modo aumentando il PageRank delle tue pagine.

I collegamenti possono puntare al tuo sito utilizzando entrambe le versioni www e non www dell'URL (ad esempio, http://www.example.com e http://example.com ). Il dominio preferito è la versione che desideri utilizzare per il tuo sito nei risultati di ricerca .

Dopo averci comunicato il tuo nome di dominio preferito, terremo conto delle tue preferenze durante la visualizzazione degli URL. Potrebbe essere necessario del tempo prima che questa modifica si rifletta completamente nel nostro indice.

Se non specifichi un dominio preferito, potremmo considerare le versioni www e non www del dominio come riferimenti separati a pagine separate.


1

Ho avuto il problema opposto, la gente va su www.domain.com quando voglio solo servire direttamente da domain.com:

<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>

Come menzionato da Greg Hewgill, l'uso di Redirect è un po 'più semplice di RedirectMatch e fa lo stesso lavoro, vedere http://httpd.apache.org/docs/2.0/mod/mod_alias.html#redirect per maggiori dettagli.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.