Administrar 2 dominios desde un .htaccess

Iniciado por z3nth10n, 13 Enero 2017, 09:33 AM

0 Miembros y 1 Visitante están viendo este tema.

z3nth10n

Buenas gente, pues nada aquí me encuentro desde hace cierto tiempo con un problema que yo por mi mismo no se solucionar ya que bueno, se trata de .htaccess, y no se manejarlo muy bien. No es para mi una prioridad para mi por el momento resolver esta duda, ya que no estoy usando la web muy frecuentemente en estos momentos. Pero si me gustaría tener resuelta esta duda cuanto antes para cuando vuelva.

Ya pregunté a principios de Diciembre en StackOverflow, y bueno, hasta cierto momento me dieron ayuda, lo que pasa que no fui muy avispado y di por solucionada la pregunta cuando realmente no lo estaba al 100% y me quedé tirado.

Mi duda es la siguiente, actualmente yo tengo un hosting gratuito y dos dominios comprados redirigidos correctamente hacia este (desde los 2 se puede acceder a la misma web).

Para separarlos, tengo 2 carpetas, dominio1 y dominio2 (suponiendo que su nombre fuese dominio1.com y dominio2.com).

Hasta aqui serían 2 rewritecond y 2 rewriterule. Pero la cosa se complica, ya que actualmente a uno de los dominios tengo creado desde el cPanel de Hostinger otro subdominio, el cual se ha asignado automaticamente una carpeta contigua a las 2 anteriores (todas están en la raiz).

Aquí ya se complica la cosa, porque, si no mal recuerdo, el problema que tenia es que se me iba todo a la p**a por el tema de ser una carpeta, porque desde una subcarpeta desde un dominio se podia acceder a otra subcarpeta que supuestamente correspondría al otro subdominio.

El usuario me dio un .htaccess bastante bonito, salvo por la excepción de que en todas las subcarpetas me daba un 403, solo funcionaban las principales carpetas.

Y ya no se como solucionarlo, porque .htaccess no lo manejo muy bien que digamos.

Aquí el código:

RewriteEngine on
RewriteBase /
# capture the original request so you never have trouble with (un)escaping
RewriteCond %{THE_REQUEST} \S+\s+(\S*)
RewriteRule ^ - [E=REQ:%1]
# ensure the domain goes to the required dir
#  get domain
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)
RewriteRule ^ - [E=DOM:%1]
#  explicitly set dir per host
RewriteCond %{ENV:DOM} =sub.domain1.com [NC]
RewriteRule !^sub/ sub%{ENV:REQ} [NE,DPI,L]
RewriteCond %{ENV:DOM} =domain2.com [NC]
RewriteRule !^d2/ d2%{ENV:REQ} [NE,DPI,L]

# allow domain1.com to proceed to root (any other rules go below)
# rules must still exclude subdirectories for other domains, e.g.:
RewriteRule ^(?!sub/|d2/)([^/]+)/([^/.]+)$ foo.php?bar=$1&baz=$2 [NE,B,L,DPI]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !^(?:sub/|d2/|index\.php$) index.php [L,DPI]

# after all other rules, emulate DirectorySlash so that Apache does not naively insert hidden directory into public URL
DirectorySlash off
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule (?>.*)(?<!/) %{ENV:REQ}/ [L,DPI,R]


Pregunta: http://stackoverflow.com/questions/40834726/manage-two-domains-pointing-to-one-hosting-with-htaccess

Gracias a todos los que se dispongan a leer todo esto, ya que es bastante denso. Y más aún a aquellos que me echen una mano.

Un saludo.

Interesados hablad por Discord.

#!drvy

No entiendo que lógica pretendes conseguir con esto. ¿ 2 dominios para la misma web (mismo contenido) ? No se, no tiene sentido. El htaccess que te han dado  es super liante..

Primero antes que nada, si Hostinger te permite aparcar dos dominios, el panel de control debería tener configurado los directorios a los que apuntaría cada dominio.. por tanto no haría falta tanta insensatez en htaccess. Pero si acaso no lo tiene... creo que bastaría con reglas simples..

Código (apache) [Seleccionar]
# Dominio 1
RewriteCond %{HTTP_HOST} ^(?:www\.)?dominio1.com$ [NC]
RewriteRule ^(.*)$ /dominio1/$1 [L] # carpeta dominio1 en el root.

# Dominio 2
RewriteCond %{HTTP_HOST} ^(?:www\.)?dominio2.com$ [NC]
RewriteRule ^(.*)$ /dominio2/$1 [L] # carpeta dominio2 en el root.

# Subdominio para dominio1.com
RewriteCond %{HTTP_HOST} ^subdominio.dominio1.com$ [NC]
RewriteRule ^(.*)$ /subdominio/$1 [L] # carpeta "subdominio" en el root


No he hecho pruebas pero vamos.. según lo que pides.. esto debería ser suficiente..

Saludos

z3nth10n

#2
Muchas gracias Drvy, como siempre.

Siempre al explicar algo que ya había hecho me confundo (normal si no lo reviso), ahora cuando he vuelto a la practica me he dado cuenta que realmente no era así. Que lo que me ocurria diferia un poco de lo que he explicado.

Resulta ser, que tengo 4 carpetas, y me gustaría, que una se dedique al propio subdominio de la pagina (ikillnukes.hol.es y su nombre es ikillhol), lerp2dev (lerp2dev.com), wiki (wiki.metal-assault.es) y la ultima carpeta que no me importaria dejarla sin configurar: metalassault (metal-assault.es)

Muy bien, pues atendiendo a que solo necesito 3 de las 4 propuestas:



Pues bueno, todo deberia ir bien no?

Pues no es así:







Y surprais:



* Todos estos errores ahora mismo se pueden ver en tiempo real.

Tiene sentido, quiere decir que el problema está en el htaccess y tengo ese dominio apuntando a mi web es normal que quiera funcionar. Entonces, creo que por eso lo hizo el otro usuario tan lioso pq se lo dije.

En todo caso, para que veais que no miento (esto no daba 500 Internal Server Error), este es el codigo que tenia antes:



Entonces, hay alguna forma de ver la causa exacta del error 500? Otra cosa que me jode de Hostinger es que los errores 404 me los redirecciona y nunca puedo ver cual es la causa exacta de este, pq no puedo ver las rutas y no hay forma de arreglarlo, algo hay en el cPanel para rediregir, pero no hace nada... :-\

Un saludo.

Interesados hablad por Discord.

#!drvy

#3
Mmm claro, se me olvidaban las re-direcciones infinitas..  Bueno, he instalado un box con apache y he juntado algo de ese tipo con algo de lo que puse antes..

Código (apache) [Seleccionar]
Options +FollowSymLinks

<IfModule mod_rewrite.c>
   RewriteEngine on
   
   # Capturar Global Request
   RewriteCond %{THE_REQUEST} \S+\s+(\S*)
   RewriteRule ^ - [E=REQ:%1]
   
   # Sitio 1 (carpeta dominio1)
   RewriteCond %{HTTP_HOST} ^dominio1.com$ [NC]
   RewriteCond %{REQUEST_URI} !^/dominio1/.*$
   RewriteRule ^(.*)$ /dominio1/$1 [L]
   
   # Sitio 2 (carpeta dominio2)
   RewriteCond %{HTTP_HOST} ^dominio2.com$ [NC]
   RewriteCond %{REQUEST_URI} !^/dominio2/.*$
   RewriteRule ^(.*)$ /dominio2/$1 [L]
   
   # Subdominio 1 (carpeta subdominio)
   RewriteCond %{HTTP_HOST} ^subdominio.dominio1.com$ [NC]
   RewriteCond %{REQUEST_URI} !^/subdominio/.*$
   RewriteRule ^(.*)$ /subdominio/$1 [L]
   
   # Evitar que Apache use el trailing slash como le de la gana.
   # Redirecciona una ruta (carpeta) para que termine con /
   DirectorySlash off
   RewriteCond %{REQUEST_FILENAME} -d
   RewriteRule (?>.*)(?<!/) %{ENV:REQ}/ [L,DPI,R]
</IfModule>


Básicamente aprovecho su manera de cargarse el trailing slash de apache que es una miseria. Lo demás es casi lo mismo pero se añade un RewriteCond en contra de la misma carpeta del dominio para evitar re direcciones infinitas.

PD: Respecto a los errores 404 de Hostinger (y demás como 5xx)
-> https://www.hostinger.es/base-conocimiento/94

Saludos

z3nth10n

Muchitas gracias!!

Lo unico es que por ejemplo: http://metal-assault.es/

Desde Firefox redirigue a: http://metal-assault.es/////////////////////

;D ;D ;D

Ya se que es tan facil como crear la carpeta... Pero bueno jaja

Interesados hablad por Discord.