El subdominio no funciona sin www delante

El subdominio no funciona sin www delante

Antes tenía una configuración de subdominio en cpanel (sub.dominio.com para redirigir a dominio.com/sub/) y de repente hoy noté que estaba reescribiendo la URL en el navegador a www.dominio.com/sub/ en lugar de simplemente simplemente dejándolo como sub.dominio.com. No estaba seguro de cuál era el problema, pero decidí eliminar mi subdominio y volver a crearlo en cpanel. Ahora solo puedo acceder a él yendo a www.sub.domain.com (sub.domain.com arroja un error de servidor no encontrado).

EDITAR: El problema parece estar en el archivo .htaccess. Después de eliminarlo, todo volvió a la normalidad. Sin embargo, ahora mi nuevo problema es cómo configurar correctamente el archivo .htaccess. Lo modifiqué originalmente para intentar lograr lo siguiente:

Tengo tres carpetas, live, staging y dev:

1) Las solicitudes de dominio.com o www.dominio.com se dirigen a dominio.com/live (y la URL que ve el usuario siempre se reescribe como www.dominio.com).

2) Solicitudes de staging.domain.com y dev.domain.com o dirigidas a domain.com/staging y domain.com/dev, respectivamente, y el usuario ve staging.domain.com o dev.domain.com en el navegador .

3) El navegador no reescribe ningún subdominio en general cuando lo agrego en cpanel.

Mi archivo .htaccess actual logra el número 1 sin problemas, pero reescribe staging.domain.com en www.domain.com/staging y así sucesivamente.

RewriteCond %{HTTP_HOST} !^www\.domain\.com$
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
RewriteRule ^$ /index.html

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\..+$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.domain.com/$1/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/live/
RewriteRule ^(.*)$ /live/$1

Respuesta1

Modifiqué la lógica de mi código original y parece que tengo una solución funcional viable. Todas las pruebas que he realizado han sido exitosas. Si alguien ve algún defecto en el código o cómo podría optimizarse para ajustarse a las condiciones planteadas en la pregunta original, por favor intervenga. Tengo poca experiencia trabajando con reescrituras. Gracias.

Código de trabajo:

# REDIRECTS
#
# Add www in front of all URLs except subdomains
#
RewriteCond %{HTTP_HOST} ^domain\.com$
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
RewriteRule ^$ /index.html
#
# Add forward slash at end of www URLs
#
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.domain\.com$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\..+$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.domain.com/$1/ [R=301,L]
#
# Forward requests to live folder
#
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/live/
RewriteRule ^(.*)$ /live/$1

*Nota: No estoy seguro de por qué la última parte del código no redirige las URL del subdominio a una carpeta activa. Funciona como quiero, pero no estoy seguro de por qué ^_^;

información relacionada