【发布时间】:2011-11-16 18:37:17
【问题描述】:
我有一个标准的 LAMP 设置,我试图让子域自动工作,只要存在适当命名的文件夹。
如果您熟悉 MediaTemple 的 GridServer 共享托管服务,我正在尝试模拟它处理通配符子域的方式:
- 如果请求 subdomain.domain.com,请查找名为 subdomain.domain.com 的文件夹
- 如果找到该文件夹,则将其称为 home 并在其中提供站点,遵守其中可能存在的任何 .htaccess 文件。
- 如果没有找到文件夹,只显示 domain.com
有人告诉我,我的根域中的 .htaccess mod_rewrite 是可行的方法,而且我已经能够检测到子域并至少指向适当的子文件夹,但我认为这不会留下任何机会一旦服务器知道子域的文件夹所在的位置,subdomain.domain.com .htaccess 文件自己的 mod_rewrite 就会接管。
这是我的 .htaccess:
RewriteCond %{HTTP_HOST} ^([a-zA-Z0-9-]+)\.domain.com$
RewriteRule ^(.+) /vhosts/%1.domain.com/html/pages/$1.php [L,QSA]
...还有我的文件夹结构:
domain.com
html
.htaccess
vhosts
subdomain.domain.com
html
.htaccess
pages
index.php
pagename.php
如您所见,subdomain.domain.com 中的站点依赖于它自己的 mod_rewrite 才能运行,因为页面文件不在服务器所期望的位置。
现在,我知道我可能会在我的根域的 .htaccess 中包含子域的 .htaccess 规则,但前提是我还需要能够将完全不同的域名指向这些子域(所以subdomain 可以通过 subdomain.domain.com 和 mydomain.com 访问),因此这些 subdomain.domain.com 文件夹需要完全自给自足。
那么如何让我的服务器在正确的位置查找子域的文件夹,同时允许其自己的 .htaccess mod_rewrites 工作?
非常感谢任何帮助!
刚刚有人建议 mod_rewrites 是错误的方法,而 mod_vhs 是我想要使用的。有人知道 mod_vhs 吗?
【问题讨论】:
标签: apache .htaccess mod-rewrite subdomain wildcard