.htaccess重写子目录到目录

是否有可能使用.htaccess重写一个子域到一个目录?

例:

  • http://sub.domain.com/

显示的内容

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

尝试把这个在你的.htaccess文件中:

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

对于一个更一般的规则(与任何子域,而不是sub )使用这个replace最后两行:

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

我不是一个mod_rewrite的专家,我经常与它斗争,但我已经在我的一个网站上做了这个,它可能需要其他标志等等,这取决于你的情况。 我正在使用这个:

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

其他任何网站的其他重写规则必须事后,以防止他们干扰你的子域重写。

您可以在htaccess中使用以下规则将子域重写到子文件夹:

 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] 

逐行解释:

  RewriteEngine on 

上面的行告诉服务器打开引擎重写URL。

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

这条线是RewriteRule的条件,我们使用正则expression式模式匹配http主机。 条件说,如果主机是sub.domain.com然后执行规则。

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

该规则与http://sub.domain.com/foo相匹配,并在内部将其redirect到http://sub.domain.com/folder/foo

将sub.domain.comreplace为您的子域名和文件夹的名称,以指定您的子域名。

我遇到了同样的问题,并在http://www.webmasterworld.com/apache/3163397.htm中find了详细的解释;

我的解决scheme(子域内容应该在一个名为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] 

redirect到子域的同一个文件夹:.httaccess

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

redirect子域名目录:

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

尝试将这个.htaccess文件放在子域文件夹上:

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

当您只希望显示http://sub.domain.com/时,它会redirect到http://domain.com/subdomains/sub/

对于任何子域请求,请使用以下命令:

 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] 

只需使一些文件夹与您需要的子域名相同即可。 文件夹必须像这样存在: domain.com/sub for sub.domain.com