2009-04-28 14 views
13

¿Cómo elimina Stack Overflow (y otros sitios web) el prefijo 'www' cuando se ingresa como parte de una URL?Eliminar el prefijo WWW de su sitio web

¿Es un redireccionamiento, una reescritura o algo completamente diferente?

Actualización: Me específicamente gustaría saber en el contexto de IIS 6

+0

que realmente le ayudará a obtener una respuesta útil conocer el servidor que desea conocer. –

+0

Vaya, buen punto, lo he agregado, gracias. – Rob

+4

Es importante tener en cuenta que si no usa un www (o algún otro subdominio), entonces todas las cookies se enviarán a cada subdominio y no podrá tener un subdominio sin cookies para servir contenido estático, reduciendo así la cantidad de datos enviados de ida y vuelta entre el navegador y el servidor. Algo de lo que luego puedes arrepentirte. http://twitter.com/codinghorror/statuses/1637428313 –

Respuesta

10

para prender Fiddler, podemos ver que los servidores respuestas con un "301 movido permanentemente" el estado y se refiere a http://stackoverflow.com. Dado que StackOverflow está alojado en Windows 2k8 IIS7 configuraron este redireccionamiento directamente en IIS7.

FYI:

a list of HTTP statuses

Si usted es un desarrollador de .NET se puede saber "Respose.Redirect", esto crea un estado Movido 302 objetos. Los motores de búsqueda como los códigos de estado 301 en este caso mejor, porque saben que no deberían volver a www.stackoverflow.com en el futuro.

4

redirección. el subdominio "www.stackoverflow.com" simplemente redirigiría a "stackoverflow.com".

+1

¿Cómo se actúa la redirección: código, dns o servidor? – Rob

+0

dado que estamos hablando de SO aquí, una aplicación MVC, ejecutándose en IIS, probablemente una redirección programática diría. próximo DNS. Los scripts de Apache no se aplican si le interesa a IIS. –

12

En Apache, parece que este (dentro de un archivo .htaccess):

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^www.example.com$ [NC] 
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L] 
5

usted puede hacerlo de varias maneras, usando mod_rewrite y redireccionamiento es mi favorito. Algo como esto:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^www.cuenca.co$ [NC] 
RewriteRule ^(.*)$ http://cuenca.co/$1 [R=301,L] 
+0

Gracias, esto funciona para mí en el servidor Apache :) –

12

Una forma sencilla de hacerlo es usando la directiva de Apache "Redirect":

<VirtualHost *:80> 
    ServerName www.example.com 
    Redirect permanent/http://example.com/ 
</VirtualHost> 

<VirtualHost *:80> 
    ServerName example.com 
    # remainder of server configuration goes here 
</VirtualHost> 

La directiva de redirección conserva automáticamente cualquier cosa que siga la / en la URL. Encuentro que este método es más fácil de leer y comprender que el método Rewrite.

+0

Gracias. Esto es muy limpio en comparación con el método de reescritura y funciona muy bien. – Kevin

0

Esto está yendo un largo camino atrás, pero hasta donde sé, esto es una configuración de DNS. Creo que no es necesario que especifique una dirección HOST (WWW es el nombre del host (o computadora/clúster ...) en el que reside el sitio).

Creo que puede configurarlo para enviar todas las solicitudes a un host predeterminado.

No 100% seguro, pero mira lo que es posible con DNS.

Espero que te ayude o al menos va en la dirección correcta.

1

Necesita una entrada dns predeterminada agregada apuntando a su servidor web.

ping site.com y verifique que ip apunta al servidor web, si no es necesario, debe agregarse la entrada DNS predeterminada.

para una configuración básica:

Vas a tener que agregar encabezados de host http://www.visualwin.com/host-header/

Crear 1 sitio con un hostheader de www.site.com

En la ficha Directorio, ponerlo en una redirección permanente a http://site.com

Crear un segundo sitio con un encabezado de host de site.com

Si desea www.site.com/file. html para redireccionar a site.com/file.html necesitará una configuración más avanzada con algo como ISAPI_Rewrite o usar páginas 404 personalizadas para hacerlo.

0

Puede hacer lo que mod_rewrite hace para Apache, con un reescritura de URL comparable para IIS. Una buena es IIRF. La regla es:

RewriteCond %{HTTP_HOST} ^www\.example\.com$  [I] 
RedirectRule ^(.*)$  http://example.com/$1 [R=301] 

También puede comodín el nombre de host de este modo:

RewriteCond %{HTTP_HOST} ^(.+)\.example\.com$ [I] 
RedirectRule ^(.*)$  http://example.com/$1 [R=301] 

IIRF es de uso gratuito.

0

para Apache

<VirtualHost *:80> 
ServerName yourdomain.tld 
ServerAlias www.yourdomain.tld 
+0

¡Bienvenido a Stack Overflow! Considere agregar alguna explicación a su respuesta, en lugar de simplemente codificar. – starsplusplus

Cuestiones relacionadas