PHPFixing
  • Privacy Policy
  • TOS
  • Ask Question
  • Contact Us
  • Home
  • PHP
  • Programming
  • SQL Injection
  • Web3.0

Tuesday, January 25, 2022

[FIXED] Cake: using relative urls

 January 25, 2022     cakephp, url     No comments   

Issue

My login redirect is being built with an absolute url but I need to use a relative url because my cakephp application is being served up through a proxy server.

The Router class has properties that effect the behavior of the url method (documentation link: http://api.cakephp.org/class/router#method-Routerurl )

I think what I want to do is set the 'base' property to false, but I'm not exactly sure how to do this. Do I just specify

$this->base = false;

somewhere? (I tried doing this in the beforeFilter in the controller but it had no effect).

Update: Well, it's not the ideal solution but I can get the links to work through the proxy server by adding this line to paths.php: define('FULL_BASE_URL','http://www.myexternaldomain.com');

and then I also had to set the security level to low in core.php.

But then this means that went I access the cake pages locally with http://localhostname/cake/users

I'll get redirected to the external url which is not what I would prefer.

Update:

Here is the output of a print_r($_SERVER) from my dev server:

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] => text/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_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) Server at devdataload Port 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=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


Solution

This solution isn't ideal but at least it's functional. In my production system I add this line into paths.php:

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

This ensures that all urls go through the proxy server.

In dev/test where I am only working locally, I comment that line out.



Answered By - opike
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
Newer Post Older Post Home
View mobile version

0 Comments:

Post a Comment

Note: Only a member of this blog may post a comment.

Total Pageviews

Featured Post

Why Learn PHP Programming

Why Learn PHP Programming A widely-used open source scripting language PHP is one of the most popular programming languages in the world. It...

Subscribe To

Posts
Atom
Posts
Comments
Atom
Comments

Copyright © PHPFixing