2011-02-16 2 views
0

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

класс

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

Я думаю, что я хочу сделать, это установить свойство «базовый» в ложь, но я не точно уверен, как это сделать. Я только что указываю

$this->base = false; 

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

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

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

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

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

Update:

Вот выход из print_r ($ _ SERVER) от моего Dev сервера:

Array ([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, application/xhtml + xml, application/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_R EFERER] =>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_FILENAME] => /var/www/html/cakepf/app/webroot/index.php [REMOTE_PORT] => 39979 [REDIRECT_QUERY_STRING] => url = warn [REDIRECT_URL] =>/cakepf/app/webroot/warn [GATEWAY_INTERFACE] => CGI/1.1 [SERVER_PROTOCOL] => HTTP/1.1 [REQUEST_METHOD] => GET [QUERY_STRING] => url = warn [REQUEST_URI] =>/cakepf/warn [SCRIPT_NAME] =>/cakepf/app/webroot/index. php [PHP_SELF] => /cakepf/app/webroot/index.php [REQUEST_TIME] => 1299347553

+0

См. Ответ ниже. Возможно, я не понимаю вопроса. У вас есть конкретный пример того, как вы создаете URL-адреса, что получаете и что вам нужно? – deceze

ответ

0

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

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

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

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

3

Торт ручки относительные и абсолютные e 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

Это не подходит для меня. Я нигде не закодировал их, но когда я пытаюсь получить доступ к http://www.myexternaldomain.com/cake/alerts через прокси-сервер, и я еще не вошел в систему, он перенаправляет меня на http: // mylocalserver/cake , – opike

+0

@opike Не могли бы Вы предоставить более подробную информацию о своей настройке? Где * следует * перенаправить? Какой запрос вы получаете ('print_r ($ _ SERVER)')? Как настроен AuthComponent? Любая другая полезная информация? – deceze

+0

Ссылки, выставленные в Интернете, это http: // www. .com/cakepftest/оповещения. Однако www. .com - это просто прокси-сервер, и торт на самом деле работает на имя хоста, называемое testdataload. Если пользователь пытается получить доступ к http: // www. .com/cakepftest/предупреждения перед тем, как они вошли в систему, они перенаправляются на http: // testdataload/cakepftest. Кажется, что AuthComponent настроен отлично; все поведение как ожидалось, кроме проблемы с перенаправлением. – opike

Смежные вопросы