壮心未与年俱老,死去犹能作鬼雄。这篇文章主要讲述如何在webapp中创建子域用户帐户相关的知识,希望能为你提供帮助。
我希望允许用户控制我正在玩弄的应用程序的子域名,就像Basecamp,它是customusername.seework.com
。
DNS
端需要什么才能动态创建并立即可用。
你如何建议在网站的逻辑中处理这个问题? Htaccess
规则查找DB
中的子域名?
答案我们这样做的方法是在DNS中注册我们的域名“全部捕获”,以便anything.ourdomain.com指向我们的服务器。
使用Apache,您可以为您的vhost设置类似的catch-all。 ServerName必须是单个静态名称,但ServerAlias指令可以包含模式。
Servername www.ourdomain.com
ServerAlias *.ourdomain.com
现在所有域都将触发我们项目的vhost。最后一部分是解码实际使用的域名,以便您可以在代码中计算出用户名,如(php):
list( $username ) = explode( ".", $_SERVER[ "HTTP_HOST" ] );
或者已经建议的RewriteRule将user.ourdomain.com/foo/bar静默地映射到www.ourdomain.com/foo/bar?user=user或您喜欢的任何内容。
另一答案【如何在webapp中创建子域用户帐户】不要担心DNS和URL重写
您的DNS记录将是静态的,例如:
*.YOURDOMAIN.COM A 123.123.123.123
请求您的DNS提供商为您执行此操作(如果尚未完成),或者如果您可以控制DNS记录,请自行执行此操作。这将自动将所有子域(当前和未来的子域)指向同一个HTTP服务器。
完成后,您只需要在每个http请求上解析HOST标头,以检测用于访问http服务器上的服务器端脚本的主机名。
假设您正在使用ASP.NET,这是我想出的一些愚蠢的例子,但是可以工作并证明了这种方法的简单性:
<
%@ Language="C#" %>
<
%
string subDomain = Request.Url.Host.Split('.')[0].ToUpper();
if (subDomain == "CLIENTXXX") Response.Write("Hello CLIENTXXX, your secret number is 33");
else if (subDomain == "CLIENTYYY") Response.Write("Hello CLIENTYYY, your secret number is 44");
else Response.Write(subDomain+" doesn't exist");
%>
另一答案诀窍是使用URL重写,以便name.domain.com透明地映射到服务器上的domain.com/users/name。一旦你开始走这条道路,实施起来相当简单。
另一答案我当时想做类似的事情(
www.mysite.com/SomeUser
)。我做的是我编辑了
404.shtml
以包含此服务器端包含(SSI)代码:<
!--#include virtual="404.php" -- >
然后我创建了文件
404.php
,在那里我解析了URL以检查用户的名字并从数据库中显示他们的信息。推荐阅读
- eclipse webapp中的pom.xml文件出错
- webapp2 - 如何反转模板中的URL()
- java web-application初始化和关闭
- 如何在Appsource.Microsoft.com上发布“Web App”()
- 如何在watch app上访问PFUser.Current()
- Android - 解析查询.include(“key”)不返回完整的ParseObject详细信息
- android,在离线模式下保存文件(parse.com)
- 图像捕获,保存文件... Android / Parse
- Android推送通知 - Parse.com API - 不工作()