CakePHP版本-2.5.5
我的域名是http://www.thechatfun.com
个人资料页面链接 - http://www.thechatfun.com/users/profile
聊天页面链接 - http://www.thechatfun.com/chats/index
以上两个链接我希望看起来像http://profile.thechatfun.com
和http://www.chat.thechatfun.com
我无法在CakePHP中创建子域。
请帮帮我
由于 ChatFun
答案 0 :(得分:4)
只要您可以配置域记录以将聊天和配置文件子域指向您的服务器,那么您可以更改webroot文件夹中的htaccess文件并添加..
<IfModule mod_rewrite.c>
#standard cake htaccess stuff
...
RewriteCond %{HTTP_HOST} ^profile\.thechatfun\.com$ [NC]
RewriteRule ^(.*)$ http://www.thechatfun.com/users/profile/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^chat\.thechatfun\.com$ [NC]
RewriteRule ^(.*)$ http://www.thechatfun.com/chats/index/$1 [R=301,L]
</IfModule>
我有这个确切的要求,这对我有用。
答案 1 :(得分:1)
按照您的上下文,在此目录中/lib/Cake/Routing/Route
创建文件SubdomainRoute.php
,内容为:
class SubdomainRoute extends CakeRoute {
public function match($params) {
$subdomain = isset($params['subdomain']) ? $params['subdomain'] : null;
unset($params['subdomain']);
$path = parent::match($params);
if ($subdomain) {
$path = 'http://' . $subdomain . '.thechatfun.com' . $path;
}
return $path;
}
}
在创建链接时,您可以执行以下操作以使链接指向其他子域。
echo $this->Html->link(
'Profile',
array('subdomain' => 'profile', 'controller' => 'Users', 'action' => 'profile')
);
echo $this->Html->link(
'Chats',
array('subdomain' => 'chat', 'controller' => 'Chats', 'action' => 'index')
);
答案 2 :(得分:1)
profile.thechatfun.com和www.chat.thechatfun.com是不同的域名。单个http服务器可以处理这两个域,但它不会自动发生。
假设您的网络服务器是Apache,您首先需要配置网络服务器以正确处理这些域。您可以添加VirtualHost指令,以便这两个域由同一个虚拟主机处理并共享文档根目录,或者您可以为每个域添加一个虚拟主机,并为每个域分别设置文档根目录。
您的网络服务器首先收到HTTP请求,然后将请求传递给PHP进行处理。因此,如果您的网络服务器没有正确配置来处理这些域,那么您将无法在PHP或CakePHP中控制它。