¿Es posible usar .htaccess para reescribir un subdominio en un directorio?
Ejemplo:
muestra el contenido de
¿Es posible usar .htaccess para reescribir un subdominio en un directorio?
Ejemplo:
muestra el contenido de
Respuestas:
Intente poner esto en su archivo .htaccess:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^sub.domain.com
RewriteRule ^(.*)$ /subdomains/sub/$1 [L,NC,QSA]
Para una regla más general (que funciona con cualquier subdominio, no solo sub
) reemplace las dos últimas líneas con esto:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com
RewriteRule ^(.*)$ subdomains/%1/$1 [L,NC,QSA]
http://test.domain.com/subdomains/test/
, cuando solo quiero que se muestrehttp://test.domain.com/
test.domain.com/subdomains/test
, tal vez haya algo más aquí. ¿Puedes agregar RewriteBase /
justo después RewriteEngine on
? Además, si desea que siga mostrándose test.domain.com
, tendrá que usar mod_proxy y la [P]
bandera.
No soy un experto en mod_rewrite, a menudo lucho con eso, pero he hecho esto en uno de mis sitios, es posible que necesite otras banderas, etc., dependiendo de 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 resto del sitio debe aplicarse posteriormente para evitar que interfieran con la reescritura de su subdominio.
.htaccess
llega a esta página (como lo hice yo), además de crear el .htaccess
archivo real , para que sea efectivo, debe establecer AllowOverride
su VirtualHost
configuración ( stackoverflow.com/a/22819550/1657502 ) , habilite el rewrite
módulo de Apache y luego reinicie Apache ( stackoverflow.com/a/5758551/1657502 )
www.
prefijo opcional probablemente se admita mejor mediante una redirección que una reescritura.
Puede usar la siguiente regla en .htaccess para reescribir un 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]
Explicación línea por línea:
RewriteEngine on
La línea anterior le dice al servidor que encienda el motor para reescribir las URL.
RewriteCond %{HTTP_HOST} ^sub.domain.com$ [NC]
Esta línea es una condición para RewriteRule en la que coincidimos con el host HTTP utilizando un patrón de expresiones regulares. La condición dice que si el host es sub.domain.com , ejecute 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 (el contenido de los subdominios debe 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]
Esto redirige a la misma carpeta a un subdominio:
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^([^\.]+)\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://domain\.com/subdomains/%1
Intente poner 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 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 subdominio, 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 alguna carpeta sea igual al nombre de subdominio que necesita. La carpeta debe existir así: dominio.com/sub para subdominio.com .
http://test.domain.com
, la URL me redirige ahttp://test.domain.com/subdomains/test/
. ¿Es posible sin mostrar el/subdomains/test/
al final?