如何使用子文件夹映射多级子域

时间:2018-02-19 15:15:51

标签: php regex apache .htaccess subdomain

我有以下多级子域:

  • aaa.bbb.ccc .app.example.com
  • XXX.YYY.ZZZ .app.example.com
  • 111.222.333 .app.example.com

这些域的内容(index.html,css,JavaScript)位于:

  • 根/的 AAA / BBB / CCC
  • 根/的 XXX / YYY / ZZZ
  • 根/的 111/222/333

所有初始域级别指向 root

在.htaccess中,如何将这些域(无重定向)指向各自的文件夹?到目前为止,我有以下内容:

RewriteCond %{HTTP_HOST} ^(.*)\.(.*)\.(.*)\.app.example\.com
RewriteRule ^$ /%1/%2/%3/$1 [L,NC,QSA]

但是这段代码的问题是虽然它指向正确的文件夹,但它只显示" index.html"文件所有其他内容(css,javascript ...)出现404错误。

例如:

root / aaa / bbb / ccc /style.css

也应该可以通过

访问

aaa.bbb.ccc .app.example.com / style.css中

但我得到了404 aaa.bbb.ccc.app.example.com/style.css

1 个答案:

答案 0 :(得分:0)

您的问题位于RewriteRule pattern ^$,因此它与URI匹配,而^则结束$,意味着没有URI,在这种情况下,它仅匹配请求aaa.bbb.ccc.app.example.com/以及您说index.html的原因。

所以,改变这一行:

RewriteRule ^$ /%1/%2/%3/$1 [L,NC,QSA]

由此:

RewriteRule ^(.*)$ /%1/%2/%3/$1 [L,NC,QSA]

UPDATE:您应该排除给定目录以避免循环:

  RewriteCond %{HTTP_HOST} ^(.*)\.(.*)\.(.*)\.app\.example\.com
  RewriteCond %{REQUEST_URI} !^/(aaa|xxx|111)/
  RewriteRule ^ /%1/%2/%3%{REQUEST_URI} [L,NC,QSA]
相关问题