php-如何将子域路由到帐户页面?域屏蔽如何工作?
作者:互联网
第1部分
我想构建一个用户可以注册使用的PHP Zend Framework应用程序.当他们注册时,我希望应用程序创建一个指向其公共页面的子域,该子域为该客户端提供特定的内容.
例如:http://mywebapp.com/username或http://username.mywebapp.com
更新:“Using sub-domains as account keys”是一个很好的教程,几乎回答了我对此的疑问.这涉及使用Zend_Controller_Router_Route_Hostname
.
但是,我仍然想知道…
问题1:本教程没有提到设置通配符子域.为了实现此目的是否必要?是否可以使用通配符子域?
第2部分
我还需要为用户提供注册域名并将其指向其页面的功能.因此,如果要转到http://clientdomain.com,将看到http://clientname.mywebapp.com,但是由于地址栏中的URL显示为http://client1.com,因此您将永远无法分辨.这有意义吗?我认为该过程称为域屏蔽.我基本上想为我的用户提供免费的域屏蔽.
更新:我刚刚发现了域经销商API的世界. OpenSRS看起来不错.你有一个推荐吗?
问题2:域屏蔽如何工作?它可以与域经销商API一起使用吗?
解决方法:
对于问题的第1部分,您可以在此处实现任何解决方案-但我不确定您是否需要路由器-您不会为每个站点提供不同的功能-您只想根据URL加载不同的内容.我们用一种非常简单的方法来处理:
>在bootstrap.php中,您需要获取服务器URL
>取得URL,并去除http://之后和.mywebapp.com之前的部分
>在数据库表中查找此前缀,并加载您需要的有关用户的任何信息或其他与此前缀有关的信息
>将一个对象放入Zend_Config中,然后可以从任何包含站点详细信息的页面访问该对象(我们称此siteinfo).
>修改您的控制器或视图,以根据siteinfo做出不同的响应-即.更改他们检索的数据等
您将需要修改apache来处理此问题-最简单的方法是确保将默认域(无法识别URL时出现的页面)设置为您的应用程序.
处理DNS更改并非易事-您需要有一台可以处理通配符回复的DNS服务器.
第2部分:
我想您是说,如果我输入URL http://grouchal.com,它将重定向到http://grouchal.yourwebapp.com.这将要求我更新grouchal.com的现有DNS服务器条目,以便找到您的服务器.
如果您想在实践中看到一个很好的例子,则应该为您的域帐户设置一个google应用.我有一个像mail.grouchal.com这样的网址,一旦输入,它们就会变成mail.google.com/a/grouchal.com.这需要我将grouchal.com DNS服务器设置为指向Google服务器.然后,谷歌服务器将重定向放置到适当的位置,以将网址更改为所需的网址.
回到我上面建议的解决方案中,您将对其进行修改,以便除了检查域名存在时的前缀(即从http://grouchal.mywebapp.com中删除不满意的内容)之外,还可以查找备用域.因此,如果地址中没有mywebapp.com,则它将在数据库grouchal.com中查找,然后使用该数据设置siteinfo.
希望这是有道理的-您所遇到的问题将不会出现在PHP中,而将在设置野猫DNS服务器并让您的客户正确配置其DNS服务器方面.祝项目进展顺利.
标签:url-routing,web-applications,zend-framework,php 来源: https://codeday.me/bug/20191107/2003958.html