Tengo problemas para hacer que un subdirectorio actúe como public_html para mi dominio principal y para obtener una solución que funcione también con los subdirectorios de ese dominio.
Mi alojamiento me permite alojar varios sitios y todos funcionan muy bien. He configurado una subcarpeta debajo de mi~/public_html/directorio llamado/dominios/, donde creo una carpeta para cada sitio web por separado. p.ej
- público_html
- dominios
- sitio web uno
- sitio webdos
- sitio webtres
- ...
- dominios
Esto mantiene mis sitios agradables y ordenados. El único problema fue lograr que mi "dominio principal" encajara en este sistema. Parece que mi dominio principal está de alguna manera vinculado a mi cuenta (o a Apache, o algo así), por lo que no puedo cambiar la "raíz del documento" de este dominio. Puedo definir las raíces del documento para cualquier otro dominio ("Dominios adicionales") que agrego en cPanel sin problema. Pero el ámbito principal es diferente.
Me dijeron que editara el archivo .htaccess para redirigir el dominio principal a un subdirectorio. Esto pareció funcionar muy bien y mi sitio funciona bien en su página de inicio/índice.
El problema que tengo es que si intento navegar en mi navegador para decir la carpeta de imágenes (solo por ejemplo) de mi sitio principal, así:
www.tudominiodominio.com/images/
entonces parece ignorar la redirección y muestra el directorio completo del servidor en la URL, así:
www.tudominioprincipal.com/dominios/tudominioprincipal/images/
En realidad, todavía muestra la página "Índice de /imágenes" correcta y muestra la lista de todas mis imágenes.
Aquí hay un ejemplo de mi archivo .htaccess que estoy usando:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?yourmaindomain.com$
RewriteCond %{REQUEST_URI} !^/domains/yourmaindomain/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /domains/yourmaindomain/$1
RewriteCond %{HTTP_HOST} ^(www.)?yourmaindomain.com$
RewriteRule ^(/)?$ domains/yourmaindomain/index.html [L]
¿Este archivo htaccess parece correcto? Solo necesito hacer que mi dominio principal se comporte como un dominio adicional y sus subdirectorios cumplan con las reglas de redireccionamiento.
Respuesta1
Yo llamaría a un pícaro DirectorySlash
por eso.
- ¿Solo sucede con los directorios?
- ¿Sólo sucede cuando no hay una barra diagonal (es decir ,
/images
va a/domain/yourdomain/images/
pero/images/
está bien)?
En ese caso, hay 3 opciones:
- Asegúrese de que todos los enlaces tengan la barra diagonal (
/
) - Establecer
DirectorySlash off
(lo llevará a páginas/directorios dobles, desde el punto de vista de SEO no es agradable). Intente agregar a
RewriteRule
justo antes del últimoindex.html
: (pensado sobre la marcha, no sé si funcionará)RewriteCond %{REQUEST_FILENAME} -d RewriteCond %{REQUEST_FILENAME} !/$ RewriteRule ^(.*) $1/
Respuesta2
Uno de tus problemas es tu expresión regular: estásnoescapando de tu punto. Eso significa que se tomará como "cualquier carácter" en lugar de simplemente un punto. En lugar de
^(www.)?domain.tld$
necesitarás tener
^(www\.)?domain\.tld$