.htaccess将子域重写到目录

问题描述 投票:75回答:8

是否可以使用.htaccess将子域重写到目录?

例:

显示的内容

apache .htaccess url-rewriting dns subdomain
8个回答
97
投票

尝试将其放入.htaccess文件中:

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

对于更一般的规则(适用于任何子域,而不仅仅是sub)用这个替换最后两行:

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

48
投票

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

RewriteEngine on

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

之后必须对网站其余部分进行任何其他重写规则,以防止它们干扰您的子域重写。


13
投票

您可以在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的条件,我们使用正则表达式模式匹配http主机。条件是,如果主机是sub.domain.com,则执行规则。

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

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

将sub.domain.com替换为您的子域和文件夹,其中包含您要指向子域的文件夹的名称。


8
投票

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

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

4
投票

重定向到同一个文件夹到子域:.htaccess

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

3
投票

尝试将此.htaccess文件放在子域文件夹中:

RewriteEngine On

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

它重定向到http://domain.com/subdomains/sub/,当你只想要它显示http://sub.domain.com/


2
投票

重定向子域目录:

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

0
投票

对于任何子域请求,请使用:

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。

© www.soinside.com 2019 - 2024. All rights reserved.