Торт: используя относительные URL - PullRequest
0 голосов
/ 16 февраля 2011

У меня перенаправление входа в систему создается с абсолютным URL-адресом, но мне нужно использовать относительный URL-адрес, потому что мое приложение cakephp обслуживается через прокси-сервер.

У класса Router есть свойства, которые влияют на поведение метода url (ссылка на документацию: http://api.cakephp.org/class/router#method-Routerurl)

Я думаю, что я хочу сделать, это установить свойство 'base'ложно, но я не совсем уверен, как это сделать.Мне просто указать где-нибудь

$this->base = false;

?(Я пытался сделать это в beforeFilter в контроллере, но это не имело никакого эффекта).

Обновление: Ну, это не идеальное решение, но я могу получить ссылки для работы через прокси-сервер, добавив эту строку вpaths.php: define ('FULL_BASE_URL', 'http://www.myexternaldomain.com');

, а затем мне также пришлось установить низкий уровень безопасности в core.php.

Но тогда это означало, что я получил доступ к тортустраницы локально с http://localhostname/cake/users

Я буду перенаправлен на внешний URL-адрес, который я бы не предпочел.

Обновление:

Вот вывод print_r($ _SERVER) с моего сервера разработки:

Массив ([REDIRECT_REDIRECT_STATUS] => 200 [REDIRECT_STATUS] => 200 [HTTP_HOST] => devdataload [HTTP_USER_AGENT] => Mozilla / 5.0 (X11; U; Linux x86_64); en-US; rv: 1.9.2.11) Gecko / 20101028 CentOS / 3.6-2.el5.centos Firefox / 3.6.11 [HTTP_ACCEPT] => текст / html, приложение / xhtml + xml, приложение / xml; q = 0,9, / ; q = 0,8 [HTTP_ACCEPT_LANGUAGE] => en-us, en; q = 0,5 [HTTP_ACCEPT_ENCODING] => gzip, deflate [HTTP_ACCEPT_CHARSET] => ISO-8859-1, utf-8; q = 0,7, *; q = 0,7 [HTTP_KEEP_ALIVE] => 115 [HTTP_CONNECTION] => keep-alive [HTTP_REFERER] => http://devdataload/cakepf/users/login[HTTP_COOKIE] => CAKEPHP = ndhjfch0c1oq285ks4d2dfib90;ZDEDebuggerPresent = php, phtml, php3 [PATH] => / usr / bin: / bin [SERVER_SIGNATURE] => Сервер Apache / 2.2.8 (CentOS) на порт devdataload 80 [SERVER_SOFTWARE] => Apache / 2.2.8 (CentOS)[SERVER_NAME] => devdataload [SERVER_ADDR] => 5.213.249.197 [SERVER_PORT] => 80 [REMOTE_ADDR] => 5.213.249.197 [DOCUMENT_ROOT] => / var / www / html [SERVER_ADMIN] => root @ localhost [SCRIPT]=> /var/www/html/cakepf/app/webroot/index.php [REMOTE_PORT] => 39979 [REDIRECT_QUERY_STRING] => url = alerts [REDIRECT_URL] => / cakepf / app / webroot / alerts [GATEWAY_INTERFACE] =CGI / 1.1 [SERVER_PROTOCOL] => HTTP / 1.1 [REQUEST_METHOD] => GET [QUERY_STRING] => url = alerts [REQUEST_URI] => / cakepf / alerts [SCRIPT_NAME] => /cakepf/app/webroot/index.php [PHP_SELF] => /cakepf/app/webroot/index.php [REQUEST_TIME] => 1299347553

Ответы [ 2 ]

3 голосов
/ 17 февраля 2011

Cake прекрасно обрабатывает относительные и абсолютные URL-адреса, если вы не жестко их кодируете .
При указании URL-адресов вы всегда должны делать это с точки зрения целевого контроллера и действия, а Cake долженвыясните фактический URL.

array('controller' => 'foos', 'action' => 'bar') будет динамически переведен в /foo/bar, /project/cake/foo/bar или в любое другое подходящее значение.Если вам нужен абсолютный URL, установите соответствующий параметр на true:

Router::url(array('controller' => 'foos', 'action' => 'bar'), true)
→ http://example.com/foos/bar
0 голосов
/ 06 апреля 2011

Это решение не идеально, но, по крайней мере, оно функционально. В моей производственной системе я добавляю эту строку в paths.php:

define('FULL_BASE_URL','http://<proxy server name>');

Это гарантирует, что все URL-адреса проходят через прокси-сервер.

В dev/test, где я работаю только локально, я комментирую эту строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...