我遇到的问题起初对我来说似乎很简单,但现在证明非常困难。也许我在想它 - 会爱你的帮助。
概述: 我有一个带有两个接口的Web应用程序(1个用于客户端,1个用于客户)。所有客户都以单向路由,所有客户路由到另一个。我根据子域确定要显示的登录屏幕。 customers 获取基本域(+ www)和客户端转到[ clientName ]。example.com
问题: 我之前通过对env(“HTTP_HOST”)进行字符串操作来确定这一点 - 请参阅下面的代码。但是,现在使用本地IP(用于与其他设备/人进行测试)时会出现问题。我的代码,寻找'。'在主机环境中失败,因为IP有3个点而' localhost '有0
这些是我建立的不同命名参数以及我对路线的看法......
CUSTOMER ----------------------------- CLIENT
xyz.example.com ------>
<------ www.example.com
<------ example.com
xyz.localhost ------>
<------ www.localhost
<------ localhost
xyz.192.168.X.X ------>
<------ www.192.168.X.X
<------ 192.168.X.X
我可能真的在想这个,我希望有一些简单的Php函数,比如“get_subdomain()”,它会为我做这件事。但我没有看到它,真的很想得到一些帮助。
谢谢!
当前代码:
$host = env("HTTP_HOST");
$group = null;
// if there is exactly one dot IE example[dot]com then there is no subdomain
if(substr_count($host,'.')==1){
$group = 'customer'
}else{ // there is a subdomain
$subdomain = substr($host, 0, strpos($host, "."));
if($subdomain=='www'){
$group = 'customer'
}else{
$group = 'client'
}
}
CakePhp如果有帮助吗?
答案 0 :(得分:0)
我希望这个答案似乎不能避免你的具体问题,但在我看来,你正在邀请你的问题中的替代品。我认为你过分考虑解决方案,特别是因为它主要是为了帮助你进入测试环境。
我建议您定义自己的本地域以进行测试,而不是使用IP地址。例如,您可以(在您的主机文件或等效文件中)定义:
xyzclient.mylocaldomain 192.168.1.1 [or whatever your local ip is]
www.mylocaldomain 192.168.1.1
xyz.localhost 192.168.1.1
www.localhost 192.168.1.1
然后,您无需为本地或实时环境进行任何不同的编码。以防万一:this guide设置和配置本地域可能很有用。