Me gustaría redirigir www.example.com
a example.com
. El siguiente código htaccess hace que esto suceda:
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
Pero, ¿hay alguna manera de hacer esto de manera genérica sin codificar el nombre de dominio?
apache
mod-rewrite
url-rewriting
pozo profundo
fuente
fuente
Respuestas:
Igual que el de Michael, excepto que este funciona: P
fuente
RewriteEngine On
precursor para que funcione.http://www.domain.com/
ahttp://domain.com//
. Deberías agregar/
a laRewruteRule
. Esto funciona para miRewriteRule ^/(.*)$ http://%1/$1 [R=301,L]
.http://domain.com//
con las barras dobles. Así que lo hiceRewriteRule ^(.*)$ http://%1$1 [R=301,L]
y parece estar funcionando hasta ahoraPero si necesitamos hacer esto para http y https por separado:
fuente
RewriteCond %{HTTPS} off RewriteCond %{HTTP_HOST} ^www.example.com/$ [NC] RewriteRule ^(.*)$ http://www.example.com [R=301,L]
.../
..htaccess
no deberías obtener una barra extra. (Solo para tener en cuenta, si está realizando esta redirección en la configuración del servidor, entonces probablemente no debería usar mod_rewrite para comenzar ... un simple mod_aliasRedirect
en el contenedor vhost apropiado sería más eficiente y menos propenso a errores)Redirigir no www a www (ambos: http + https)
fuente
RewriteEngine On
yRewriteBase /
, pero por lo demás funcionó bien.Si desea hacer esto en el archivo httpd.conf, puede hacerlo sin mod_rewrite (y aparentemente es mejor para el rendimiento).
Obtuve esa respuesta aquí: /server/120488/redirect-url-within-apache-virtualhost/120507#120507
fuente
Estas son las reglas para redirigir una URL www a no-www:
Estas son las reglas para redirigir una URL sin www a www:
Tenga en cuenta que usé
NE
flag para evitar que apache escapara de la cadena de consulta. Sin este indicador, apache cambiará la URL solicitadahttp://www.example.com/?foo%20bar
ahttp://www.example.com/?foo%2250bar
fuente
La
RewriteCond
captura todo en laHTTP_HOST
variable de después de lawww.
y lo guarda en%1
.Las
RewriteRule
capturas de la URL sin el líder/
y lo guarda en$1
.fuente
sans leading "/"
- En.htaccess
(como se indica en la pregunta) no hay guiones/
, por lo que el patrón nunca coincide y la redirección nunca ocurre. (Solo hay una barra diagonal en un servidor o contexto de host virtual ). Además, si tiene alguna directiva mod_rewrite después de esto, necesitará elL
indicador.Prueba esto:
Si el host comienza con www, pegamos todo el host en el inicio de la URL, luego quitamos el "www".
fuente
.htaccess
. En un contexto de directorio (.htaccess
), debe cambiar el primeroRewriteRule
en leer:RewriteRule ^(.*)$ %{HTTP_HOST}/$1 [C,DPI]
(requiere Apache 2.2.12+). Tenga en cuenta la adición de la barra inclinada y elDPI
indicador (Descartar información de ruta) para evitar que parte de la ruta URL se duplique aparentemente (que en realidad es "información de ruta") como se indicó en comentarios anteriores. Sin embargo, hay directivas más simples, como se cubre en las otras respuestas.Completo controlador WWW genérico, http / https
No vi una respuesta completa. Lo uso para manejar la inclusión de WWW.
Por favor, hágame saber cómo funciona esto o si dejé una escapatoria.
fuente
www
a non-www
. Estás forzando la inclusión dewww
.Creo que puede haber mucha información errónea sobre las redirecciones de htaccess. En primer lugar, asegúrese de que su sitio se ejecute en Unix con Apache y no en un host de Windows si espera que este código funcione.
(Sin embargo, asegúrese de que no haya espacios de línea entre cada línea de texto; he agregado un espacio adicional entre líneas para que se vea bien en esta ventana).
Este es un fragmento de código que se puede utilizar para dirigir la versión www de su sitio a la versión http: //. También hay otros códigos similares que se pueden usar.
fuente
Para subcarpeta
fuente
Para aquellos que necesitan poder acceder a todo el sitio SIN el prefijo 'www'.
Mare asegúrate de agregar esto al siguiente archivo
fuente
protossl
variable de entorno (esta no es una variable estándar / de servidor). Esto siempre estará vacío, por lo que siempre se redirigirá ahttp
. (La idea detrás de la configuraciónprotossl
anterior en el código es para cuando se desea preservar el protocolo al redirigir Sin embargo, en estos días es probable que se deben redirigir a.https
Todo el tiempo.)Usando .htaccess para Redirigir a www o no www:
Simplemente coloque las siguientes líneas de código en su archivo principal .htaccess raíz. En ambos casos, simplemente cambie domain.com a su propio nombre de host.
Redireccionar a www
Redirigir a no www
cambie DOT a =>. !!!
fuente
Utilicé la regla anterior para fwd www a no www y funciona bien para la página de inicio, sin embargo, en las páginas internas están enviando a /index.php
Encontré esta otra regla en mi archivo .htaccess que está causando esto, pero no estoy seguro de qué hacer al respecto. Cualquier sugerencia seria genial:
fuente
www a no www con https
fuente
Si desea eliminar
www
en amboshttp
yhttps
, use lo siguiente:Esto redirige Non ssl
a
Y SSL
a
en apache
2.4.*
puedes lograr esto usando una directivaRedirect
conif
,fuente
uso: Javascript / jQuery
O .htaccess:
y el método PHP:
Ajax
fuente
La única forma en que lo hice funcionar ...
fuente
Si estás forzando www. en url o forzando ssl prototcol, luego intente usar posibles variaciones en el archivo htaccess, como:
fuente
RewriteCond %{SERVER_PORT} 80
mejor utilizar dicho cheque más universal:RewriteCond %{HTTPS} off
La respuesta seleccionada y muchas otras soluciones aquí eliminaron la parte de la url después de /, por lo que básicamente siempre se redirigió al dominio principal, al menos para mí. Así que estoy agregando una muestra de trabajo respetando la ruta completa después de la barra diagonal.
fuente
Enfoque alternativo si la personalización de .htaccess no es la opción ideal:
He creado un servidor de redireccionamiento simple para uso público. Simplemente agregue un registro A o CNAME:
Más información: https://simpleredirect.net
fuente
No estoy seguro de por qué quieres eliminar www. Pero la versión inversa sería:
Y la ventaja de este script es: si tiene algo como test.whattimein.com o cualquier otro (entorno para desarrollar / probar) no redirigirá U al entorno original.
fuente
Esto se actualiza para funcionar en Apache 2.4:
El único cambio frente a Michael es eliminar el
[NC]
, que produce el error "AH00665":fuente
RewriteCond %{REQUEST_FILENAME} !-f [NC]
). LaNC
bandera hace poca diferencia en lo anterior, sin embargo, la razón por laNC
que se debe usar aquí es para capturar la pequeña fracción del tráfico de bot que (incorrectamente) envía un nombre de host en mayúscula.Agregado si localhost, ignore la redirección (para fines de desarrollo en el entorno local). Si no es localhost Y (no https O es www), redirija a https y no www.
fuente
Hola, puedes usar las siguientes reglas en tu archivo htaccess:
fuente