让我们假设我开发一个网站,让我们假设它有foo.bar的一个领域。
让我们进一步假设我有一个用户名为LOREM和被叫用户存有。 我想创造LOREM和lorem.foo.bar的URL ipsum.foo.bar对存有的URL。 有什么用,我可以做到这一点可能的技术? 你们能不能给这个地方实现在任何技术的任何例子吗?
非常感谢。
让我们假设我开发一个网站,让我们假设它有foo.bar的一个领域。
让我们进一步假设我有一个用户名为LOREM和被叫用户存有。 我想创造LOREM和lorem.foo.bar的URL ipsum.foo.bar对存有的URL。 有什么用,我可以做到这一点可能的技术? 你们能不能给这个地方实现在任何技术的任何例子吗?
非常感谢。
根据您的需求,我认为这种方法是最简单的。
根据我的经验做你正在尝试做的最好的方法是通过在DNS服务器配置通配符域。 在您的例子* .foo.bar将是您的foo.bar域通配符。 通常,这些都是在A记录设置,但可以在MX记录等设置。 这里唯一的真正的要求是,你的DNS服务器支持通配符域。
至于网络服务器的话,你将需要采用某种形式的URL重写技术,使lorem.foo.bar显示LOREM页面等等。 有几种技术来重写URL。 在Apache上可以配置VirtualHosts或使用mod_rewrite。 在IIS有,再次,无论是使用ISAPI筛选器,也可以使用URL路由的ASP.NET MVC做重写的几种方法。
下面是一些相关的例子:
创建通配符子域名使用Apache虚拟主机
URL重写.NET 4的?
http://support.microsoft.com/kb/840687
http://www.isapirewrite.com/docs/
根据注释 - 编辑
在你的*例子.foo.bar您将只设置你的DNS服务器上的一个通配符域。 一旦做到这一点,你不应该曾经有除非你添加不同的外卡做一遍。
至于Apache的推移,你应该能够做这样的事(我没有用阿帕奇在很长一段时间所以这可能会稍微不准确)
<VirtualHost 0.0.0.0>
DocumentRoot /www/[directory sub domains are served out of]
ServerName www.foo.bar
ServerAlias *.foo.bar
</VirtualHost>
同样,这应该是一次配置或者当您添加更多通配符。 从这里,你的PHP(或任何语言你正在使用)将需要处理的哪些内容应该显示基于给定的子域的实际处理。
--edit 2第二评论
因此,一个通配符域允许几乎任何价值。 在上述情况下* .foo.bar将允许lorem.foo.bar,ipsum.foo.bar,someguy.foo.bar,等等,而无需您额外的条目添加到您的DNS服务器或添加额外的虚拟主机条目。 因此,使用上述的虚拟主机的配置可以说DocumentRoot的是/ WWW /子域。 当导航到lorem.foo.bar或ipsum.foo.bar两个请求得到服务出/ WWW的/子域文件夹,所以在这里的代码,就需要获取子域(在这种情况下LOREM或存有)的名称,然后通过查询你在的地方数据库或任何其他业务流程作用于这些值。 试图创建一个目录,DNS条目,和/或该过程虚拟主机条目是一个错误,因为它会成为一个绝对的管理噩梦。 在你上面的例子只有永远不用担心1 DNS条目,1个虚拟主机条目,一个目录值得图片,网页,PHP脚本等。