Me gustaría redirigir www.example.coma 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 Onprecursor 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].../..htaccessno 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_aliasRedirecten el contenedor vhost apropiado sería más eficiente y menos propenso a errores)Redirigir no www a www (ambos: http + https)
fuente
RewriteEngine OnyRewriteBase /, 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é
NEflag para evitar que apache escapara de la cadena de consulta. Sin este indicador, apache cambiará la URL solicitadahttp://www.example.com/?foo%20barahttp://www.example.com/?foo%2250barfuente
La
RewriteCondcaptura todo en laHTTP_HOSTvariable de después de lawww.y lo guarda en%1.Las
RewriteRulecapturas 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á elLindicador.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 primeroRewriteRuleen leer:RewriteRule ^(.*)$ %{HTTP_HOST}/$1 [C,DPI](requiere Apache 2.2.12+). Tenga en cuenta la adición de la barra inclinada y elDPIindicador (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
wwwa 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
protosslvariable 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ónprotosslanterior 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.httpsTodo 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
wwwen amboshttpyhttps, use lo siguiente:Esto redirige Non ssl
a
Y SSL
a
en apache
2.4.*puedes lograr esto usando una directivaRedirectconif,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:
RewriteEngine On RewriteBase / ### Force WWW ### RewriteCond% {HTTP_HOST} ^ ejemplo \ .com RewriteRule (. *) Http://www.example.com/$1 [R = 301, L] ## Forzar SSL ### RewriteCond% {SERVER_PORT} 80 RewriteRule ^ (. *) $ Https://example.com/$1 [R, L] ## Bloquear IP ### Orden denegar, permitir Negar desde 256.251.0.139 Negar desde 199.127.0.259fuente
RewriteCond %{SERVER_PORT} 80mejor utilizar dicho cheque más universal:RewriteCond %{HTTPS} offLa 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]). LaNCbandera hace poca diferencia en lo anterior, sin embargo, la razón por laNCque 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