.htaccess将子域重写到目录并将子域保留在url中

时间:2014-03-14 02:23:38

标签: php apache .htaccess mod-rewrite url-rewriting

我需要使用.htaccess将子域重写到子目录,但是将子域保留在url中,如下所示:

在浏览器中访问了网址:sub1.domain.com

服务网址:sub.domain.com/sub1/

我尝试了以下

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

但这会导致无休止的循环。我知道通过php更容易做到这一点,但使用.htaccess是否有任何解决方案?

1 个答案:

答案 0 :(得分:14)

您可以在文档根目录中使用此规则:

RewriteCond %{HTTP_HOST} ^subdomain\.domain\.com$ [NC]
RewriteRule ^((?!sub1/).*)$ /sub1/$1 [L,NC]

<强>解释

  • NC:忽略大小写
  • L:最后一条规则
  • RewriteCond %{HTTP_HOST}行确保该规则仅针对subdomain
  • 执行
  • (?!sub1/)是负面预测表达式,表示请求不是以/sub1/
  • 开头
  • RewriteRule ^((?!sub1/).*)$ /sub1/$1 [L,NC]重写/sub1/<uri>
  • 的当前路径

参考文献: