Версия 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
До тех пор, пока вы можете настроить свои записи в домене, чтобы указать оба поддомена для чата и профиля на ваш сервер, вы можете изменить файл 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>
У меня есть это точное требование, и это работает для меня.
Следуйте своему контексту внутри этого каталога: /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; } }
не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') );
profile.thechatfun.com и http://www.chat.thechatfun.com – это разные домены. Один сервер http может обрабатывать оба этих домена, но это не произойдет автоматически.
Предполагая, что ваш веб-сервер – это Apache, вам сначала нужно настроить веб-сервер для правильной обработки этих доменов. Вы можете добавить директиву VirtualHost, чтобы оба этих домена обрабатывались одним и тем же виртуальным хостом и совместно использовали корень документа, или вы могли добавить виртуальный хост для каждого и иметь отдельные корневые каталоги документов для каждого домена.
Сначала ваш веб-сервер получает HTTP-запрос, затем передает запрос на PHP для обработки. Итак, если ваш веб-сервер не настроен должным образом для обработки этих доменов, у вас не будет возможности контролировать это в PHP или CakePHP.