php - 如何使用 Cake PHP 创建子域?

标签 php cakephp dns subdomain

我正在构建一个站点,每个配置文件都需要一个唯一的子域。我使用的技术是 Cake PHP + MongoDB。我需要知道同样的可行性。在 Cake PHP 中的路由类的帮助下,我可以创建物理 DNS 还是可以简单地路由用户的配置文件页面。请提出更好、更容易实现的方法及其可行性。

提前致谢。

最佳答案

如果您为每个网站都使用 CakePHP,则无需担心为每个网站创建多个子域,您只需创建通配符 DNS 记录即可。这从服务器和 DNS 管理中消除了很多麻烦。

Wild-Card DNS Record(Wiki)

有了通配符 DNS 记录,您就可以使用 HTTP_HOST 或 CakePHP 方式 $request->host() 来确定用于访问您的系统的主机名(子域)。然后,您可以在 AppController 的 beforeFilter() 方法中加载正确的配置文件详细信息,然后从那里继续。

我做了类似的事情:

class User extends AppModel
{
     public $belongsTo = array(
          'Profile'
     );

     public function findByProfileHostname($hostname) {
         return $this->find('first', array('conditions' => array(
             'Profile.hostname' => $hostname
         ));
     }
};

class AppController extends Controller
{
    public function beforeFilter () {
        $this->ActiveUser = $this->User->findByProfileHostname($this->request->host());
        if (!$this->ActiveUser) {
            throw new InvalidArgumentsException(__('%s is not active here', $this->request->host()));
        }
    }
}

*免责声明:以上代码是凭内存输入的,可能无法通过复制/粘贴直接运行。

希望这对您有所帮助。

关于php - 如何使用 Cake PHP 创建子域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6744733/

相关文章:

php - .htaccess 在 SSL/端口 443 下被忽略

php - 除了某些标签之外,是否有一个 PHP 函数可以对 htmlspecialchars() 进行处理?

azure - 服务器宕机时如何设置网站默认页面?

macos - 可以在mac os上以编程方式更改DNS吗?

PHP MySQL 用逗号回显变量

PHP 脚本执行一段时间后停止,没有错误报告

cakephp - 为什么选择菜单中的第一项总是空的?

php - 更新和删除 CakePHP 中的唯一连接关系

javascript - 在 CakePHP 中,既然 View->addScript() 已弃用,如何将脚本*仅一次*添加到我的布局中?

SSL 证书 - 我是否需要为重定向到另一个域的域购买 SSL