我在公司的Intranet上设置了一堆子域名。 我手动设置每个子域。 我想某些子域自动创build。
例如,如果我有/ home / jason / foo和/ home / jason / bar,我希望能够去foo.jason.mydomain.local和bar.jason.mydomain.local,而不必手动设置那些子域。 (“jason”部分可以是硬编码的,我只是希望“foo”/“bar”部分是自动的)。
我find了这个页面 ,这似乎是我想要的,但我无法弥补他们的例子和我正在做的事情之间的差距。 有人可以帮我吗?
谢谢,杰森
在这个例子中…他们正在使用FQDN …并设置一个从子文件夹中拉出的默认站点。 基本上…任何抛出该IP的东西都会查找一个名称与DNS名称相匹配的文件夹。 即test.local.com将parsing为/somewhere/test.local.com/
我不是100%肯定…但我相信任何没有/ somewhere / _______ /文件夹的网站都会抛出一个错误…而不是默认的网站。
实际上有几种不同的方式来实现它。 (如你所链接的页面所描述的那样)
使用mod_rewrite …将有效地将URL重写为与预期不同的path。 即test.somewhere.com会将地址重写为www.something.com/test.something.com/(您可以使其双向工作,以便最终用户永远不会看到domain.com/sub-domain。 com URL …但是对于权限而言,apache就是这么看的)。在这个模型中,你会在你的文档根目录下有一个subdomain.com文件夹(或别名)。
使用mod_vhost_alias的工作方式相似…但它使得可能不总是工作的假设。 即我不认为你可以有一个“默认”的根….所有不匹配的东西都被倾倒。 但test.domain.com和test2.domain.com将分别自动映射到/somedirectory/test.domain.com和/somedirectory/test2.domain.com。
要注意的关键是configuration中使用的variables。 $ 0转换为所请求站点的完整域名。 即VirtualDocumentRoot / www /%0 /会自动转储到/www/some.domain.com/目录(如果浏览到some.domain.com)和mod-rewrite将模式匹配,也重写path目录。
我已经回答了我自己的问题。
以下是我在Apacheconfiguration中的内容:
<VirtualHost *:80> VirtualDocumentRoot /var/www/hosts/%0 ServerName jason.mydomain.local ServerAlias *.jason.mydomain.local </VirtualHost>
然后,在/ var / www / hosts中,我放置一个名为jason.mydomain.local的目录。 这一切都花了。