.htaccess reescribir el subdominio en el directorio

¿Es posible utilizar .htaccess para volver a escribir un subdominio en un directorio?

Ejemplo:

  • http://sub.domain.com/

muestra el contenido de

  • http://domain.com/subdomains/sub/

Intenta poner esto en tu archivo .htaccess:

RewriteEngine on RewriteCond %{HTTP_HOST} ^sub.domain.com RewriteRule ^(.*)$ http://domain.com/subdomains/sub/$1 [L,NC,QSA] 

Para una regla más general (que funcione con cualquier subdominio, no solo sub ) reemplace las últimas dos líneas con esto:

 RewriteEngine on RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com RewriteRule ^(.*)$ http://domain.com/subdomains/%1/$1 [L,NC,QSA] 

No soy un experto en mod_rewrite, a menudo me cuesta trabajo hacerlo, pero lo he hecho en uno de mis sitios, puede necesitar otros indicadores, etc., según sus circunstancias. Estoy usando esto:

 RewriteEngine on RewriteCond %{HTTP_HOST} ^subdomain\.example\.com$ RewriteCond %{REQUEST_URI} !^/subdomains/subdomain RewriteRule ^(.*)$ /subdomains/subdomain/$1 [L] 

Cualquier otra regla de reescritura para el rest del sitio debe ir después para evitar que interfieran con las reescrituras de su subdominio.

Puede usar la siguiente regla en htaccess para reescribir el subdominio en una subcarpeta:

 RewriteEngine On #If the host is "sub.domain.com" RewriteCond %{HTTP_HOST} ^sub.domain.com$ [NC] #Then rewrite any request to /folder RewriteRule ^((?!folder).*)$ /folder/$1 [NC,L] 

Línea por línea Explicación:

  RewriteEngine on 

La línea de arriba le dice al servidor que encienda el motor para reescribir urls.

  RewriteCond %{HTTP_HOST} ^sub.domain.com$ [NC] 

Esta línea es una condición para RewriteRule donde coincidimos con el host http usando el patrón de expresiones regulares. La condición dice que si el host es sub.domain.com entonces ejecuta la Regla.

  RewriteRule ^((?!folder).*)$ /folder/$1 [NC,L] 

La regla coincide con http://sub.domain.com/foo y la redirige internamente a http://sub.domain.com/folder/foo .

Reemplace sub.domain.com con su subdominio y carpeta con el nombre de la carpeta a la que desea apuntar su subdominio.

Tuve el mismo problema y encontré una explicación detallada en http://www.webmasterworld.com/apache/3163397.htm

Mi solución (los contenidos de los subdominios deben estar en una carpeta llamada sd_subdomain :

 Options +FollowSymLinks -MultiViews RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} !^www\. RewriteCond %{HTTP_HOST} subdomain\.domain\.com RewriteCond $1 !^sd_ RewriteRule (.*) /sd_subdomain/$1 [L] 

redirige a la misma carpeta al subdominio: .httaccess

 RewriteCond %{HTTP_HOST} !^www\. RewriteCond %{HTTP_HOST} ^([^\.]+)\.domain\.com$ [NC] RewriteRule ^(.*)$ http://domain\.com/subdomains/%1 

Intenta colocar este archivo .htaccess en la carpeta del subdominio:

 RewriteEngine On RewriteRule ^(.*)?$ ./subdomains/sub/$1 

Redirige a http://domain.com/subdomains/sub/ , cuando solo desea que se muestre http://sub.domain.com/

Redirigir el directorio del subdominio:

 RewriteCond %{HTTP_HOST} ^([^.]+)\.(archive\.example\.com)$ [NC] RewriteRule ^ http://%2/%1%{REQUEST_URI} [L,R=301] 

Para cualquier solicitud de dominio secundario, use esto:

 RewriteEngine on RewriteCond %{HTTP_HOST} !^www\.band\.s\.co RewriteCond %{HTTP_HOST} ^(.*)\.band\.s\.co RewriteCond %{REQUEST_URI} !^/([a-zA-Z0-9-z\-]+) RewriteRule ^(.*)$ /%1/$1 [L] 

Simplemente haga que una carpeta sea igual al nombre del subdominio que necesita. La carpeta debe existir así: domain.com/sub para sub.domain.com .