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

MDe*_*ein 7 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]
Run Code Online (Sandbox Code Playgroud)

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

anu*_*ava 14

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

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

说明:

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

参考文献:

  • 这确实是问题中的 op's coffee 的过去,并且在任何情况下都只是占位符,因为 op 没有透露实际的域名(有道理)。如果您遇到问题,请考虑打开一个不同的问题。 (2认同)
  • 最后......花了一个多小时搞清楚如何制作正确处理域和子域的.htaccess.这个答案有效.显然,您需要将"子域名","域名"和"sub1"替换为您的数据. (2认同)