/ / Cómo redirigir la raíz al subdirectorio usando .htaccess - regex, apache, .htaccess, mod-rewrite, redirect

Cómo redirigir raíz a subdirectorio usando .htaccess - regex, apache, .htaccess, mod-rewrite, redirect

Actualmente estoy usando alojamiento compartido y no tengo forma de poner mis archivos fuera de la carpeta "public_html".

Para solucionar esto, quiero volver a escribir mi sitio "raíz" en un subdirectorio usando la siguiente secuencia de comandos en un archivo .htaccess:

RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteCond %{REQUEST_URI} !^/subdir/
RewriteRule ^(.*)$ /subdir/$1

Lo que funciona muy bien, excepto cuando navego a www.example.com/subdir/. Esa url no se redirige a ningún lado, simplemente muestra el subdirectorio. Este es un problema para las URL relativas y tal.

¿Hay alguna manera de continuar reescribiendo mi raíz en un subdirectorio mientras también reescribimos? www.example.com/subdir/ a www.example.com?

Respuestas

1 para la respuesta № 1

Puedes usar esta regla en root .htaccess:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteCond %{REQUEST_URI} !^/subdir/ [NC]
RewriteRule ^(.*)$ subdir/$1 [L]

Y usa esta regla en /subdir/.htaccess:

RewriteEngine On
RewriteBase /subdir/

RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteCond %{THE_REQUEST} /subdir/(S*)s
RewriteRule ^ /%1? [R=302,L,NE]