Redirigir no www a www en.htaccess
(13)
Tengo esto en mi archivo .htaccess:
RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule (.*) http://www.example.com$1 [R=301,L]
pero cada vez que accedo a un archivo en mi raíz como http://example.com/robots.txt
, se redirigirá a http://www.example.comrobots.txt/
.
¿Cómo puedo corregir esto para que se redirija correctamente a http://www.example.com/robots.txt
?
Agregue el siguiente código en el archivo .htaccess.
RewriteCond %{HTTP_HOST} !^www/.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
El tutorial de redireccionamiento de URL se puede encontrar desde aquí: redirigir no www a www y HTTP a HTTPS con el archivo .htaccess
Cambie su configuración a esto (agregue una barra inclinada):
RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
O la solución que se describe a continuación (propuesta por @absiddiqueLive ) funcionará para cualquier dominio:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www/. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
Si necesita admitir http y https y conservar la opción de protocolo, intente lo siguiente:
RewriteRule ^login/$ https://www.%{HTTP_HOST}/login [R=301,L]
Donde reemplaza el login
con checkout.php
o cualquier URL que necesite para admitir HTTPS.
Sin embargo, yo diría que esta es una mala idea. Para el razonamiento , lea esta respuesta .
Creo que la respuesta principal redirige con éxito no www a www (por ejemplo: mysite.com -> www.misitio.com ), pero no tiene en cuenta los subdominios comodín, lo que da como resultado:
random.mysite.com -> www.random.mysite.com
Aquí hay una solución con / sin HTTPS
HTTP
RewriteEngine On
RewriteCond %{HTTP_HOST} !www.mysite.com$ [NC]
RewriteRule ^(.*)$ http%{ENV:protossl}://www.mysite.com/$1 [L,R=301]
HTTP / HTTPS
RewriteEngine On
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ - [env=protocol:https]
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ - [env=protocol:http]
RewriteCond %{HTTP_HOST} !www.mysite.com$ [NC]
RewriteRule ^(.*)$ %{ENV:protocol}://www.mysite.com/$1 [L,R=301]
* Nota: No he probado https porque actualmente no tengo un certificado para probar, pero si alguien puede verificar u optimizar lo que tengo, sería increíble.
El siguiente ejemplo funciona en ssl y non-ssl y es mucho más rápido ya que solo usa una regla para administrar http y https
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www/.
RewriteCond %{HTTPS}s on(s)|offs()
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R]
[Probado]
Esto redirigirá
http
a
https
a
Escribir en .htaccess :)
## Redirect from non-www to www (remove the two lines below to enable)
RewriteCond %{HTTP_HOST} !^www/. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
Esta configuración funcionó para mí en bitnami wordpress con SSL configurado:
Se agregó lo siguiente debajo de "RewriteEngine On" en el archivo /opt/bitnami/apps/wordpress/conf/httpd-app.conf
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^www/. [NC]
RewriteRule ^ http%{ENV:protossl}://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteBase /
RewriteCond %{HTTPS} !on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Esta es la solución correcta que admite https y http:
# Redirect to www
RewriteCond %{HTTP_HOST} ^[^.]+/.[^.]+$
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
He probado todas las soluciones anteriores pero no funcionaba para mí, he intentado eliminar el http: // y no redirigiré, también eliminé el www y lo redirigí bien, así que me confundí, especialmente estoy ejecutando todos mis sitios en https : //
Así que he combinado algunos códigos y encontré la solución perfecta tanto para http: // como para https: // y www y no www.
# HTTPS forced
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
# Redirect to www
RewriteCond %{HTTP_HOST} !^www/.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
Espero que esto pueda ayudar a alguién :)
Prueba esto, lo usé en muchos sitios web, funciona perfectamente
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^bewebdeveloper.com$
RewriteRule ^(.*) http://www.bewebdeveloper.com/$1 [QSA,L,R=301]
Si es posible, agregue esto al archivo de configuración principal de Apache. Es una solución más liviana, requiere menos procesamiento.
<VirtualHost 64.65.66.67>
ServerName example.com
Redirect permanent / http://www.example.com/
</VirtualHost>
<VirtualHost 64.65.66.67>
ServerAdmin [email protected]
ServerName www.example.com
DocumentRoot /var/www/example
.
.
. etc
Por lo tanto, el VirtualHost
por separado para "example.com" captura esas solicitudes y luego las redirige permanentemente a su VirtualHost
principal. Por lo tanto, no existe un análisis REGEX con cada solicitud, y los navegadores de sus clientes almacenarán en caché el redireccionamiento para que nunca (o rara vez) soliciten nuevamente la URL "incorrecta", lo que le ahorrará la carga del servidor.
Tenga en cuenta la barra inclinada posterior en Redirect permanent / http://www.example.com/
. Sin él, una redirección desde example.com/asdf
redirigiría a http://www.example.comasdf
lugar de a http://www.example.com/asdf
.
Sólo un consejo
Piense cuidadosamente si realmente necesita el redireccionamiento permanente indicado como [R=301]
porque si decide cambiarlo más tarde, los visitantes anteriores de la página no obtienen la nueva configuración.
La información de redirección permanente se almacena con frecuencia en el caché del navegador y, en general, es difícil de eliminar (volver a cargar la página no resuelve el problema). Los visitantes de su sitio web quedarán bloqueados en la redirección anterior "para siempre".
Resumen,
Recomendaría usar una redirección temporal [R=302]
porque nunca se almacena en caché.
RewriteCond %{HTTP_HOST} !^www/.domain/.com [NC]
RewriteRule (.*) http://www.domain.com/$1 [L,R=301]
Esto redirigirá tu dominio que no se inició con WWW. No redirecciona tu subdominio.
Es útil.
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www/.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
Para Https
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^(.*)$ http%1://www.%{HTTP_HOST}/$1 [R=301,L]