我有一个标准的LAMP设置,只要存在适当命名的文件夹,我就会尝试让子域自动工作。
如果您熟悉MediaTemple的GridServer共享托管服务,我正在尝试模拟处理通配符子域的方式:
我被告知我的根域中的.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.domain.com和mydomain.com访问,因此这些subdomain.domain.com文件夹需要完全自给自足。
那么如何让我的服务器查看子域名文件夹的正确位置,同时允许其自己的.htaccess mod_rewrites工作?
非常感谢任何帮助!
刚才有人建议mod_rewrites是错误的方法,mod_vhs是我想要使用的。有没有人知道mod_vhs?
答案 0 :(得分:2)
我使用VirtualHosts开始工作:
NameVirtualHost *
# Root domain homepage
<VirtualHost *>
DocumentRoot /var/www/domain.com/html
ServerName domain.com
ServerAlias www.domain.com
</VirtualHost>
# Hosted sites
<VirtualHost *>
VirtualDocumentRoot /var/www/vhosts/%0/html
ServerName *
ServerAlias *
</VirtualHost>
第一个条目捕获请求到我的主页并提供标准站点,而第二个条目捕获其他所有内容并根据请求的主机名路由到其他位置。
答案 1 :(得分:1)
易。只需确保子域名已在您的服务器的DNS中注册,然后使用这样的htaccess指向它:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^sub.domain.com$ [OR]
RewriteCond %{HTTP_HOST} ^(www\.)?sub\.domain\.com
RewriteRule .* /subfolder [L]
无需弄乱子文件夹的htaccess。