2011-02-16 7 views
0

マイログインリダイレクトは、絶対URLを使用して構築されているが、私のCakePHPアプリケーションは、プロキシサーバー経由でアップ提供されているので、私は相対URLを使用する必要があります。ケーキ:相対URLを使用して

ルータクラスは効果URL法(ドキュメントへのリンク: http://api.cakephp.org/class/router#method-Routerurl)の動作特性を持っている私は私がやりたいことはfalseに「ベース」プロパティを設定されていると思いますが、私はありません

をこれを行う方法を正確に確認してください。ただ指定するだけですか

$this->base = false; 

どこか? (私はコントローラーのbeforeFilterでこれをやってみましたが効果はありませんでした)。

更新:これは理想的な解決策ではありませんが、私はこの行をpaths.phpに追加することで、プロキシサーバーを経由するリンクを得ることができます: define( 'FULL_BASE_URL'、 'http://www.myexternaldomain。 com ');

、その後、私はまた、core.phpの中に低にセキュリティレベルを設定する必要がありました。

しかし、これは私が私が好むものではない外部のURLにリダイレクトます http://localhostname/cake/users

でローカルにケーキのページにアクセスいったことを意味します。

更新:

アレイ([REDIRECT_REDIRECT_STATUS] => 200 [REDIRECT_STATUS] => 200 [HTTP_HOST] => devdataload:ここ

がしますprint_r($ _ SERVER)の出力である私のdevのサーバーから[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] =>テキスト/ HTTP_ACCEPT_LANGUAGE] => en-us、en; q = 0.5 [HTTP_ACCEPT_ENCODING] => gzip、[HTTP_ACCEPT_CHARSET] => HTTP_ACCEPT_CHARSET => HTTP_ACCEPT_CHARSET = ISO-8859-1、utf-8; q = 0.7、*; q = 0.7 [HTTP_KEEP_ALIVE] => 115 [HTTP_CONNECTION] =>キープアライブ[HTTP_R EFERER] =>http://devdataload/cakepf/users/login [HTTP_COOKIE] => CAKEPHP = ndhjfch0c1oq285ks4d2dfib90; ZDEDebuggerPresent = PHP、PHTML、PHP3の[パス] =>は/ usr/binに:/ binに[SERVER_SIGNATURE] devdataloadで=> はApache/2.2.8(CentOSの)サーバーポート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] =>ルート@ localhostの[ SCRIPT_FILENAME] => /var/www/html/cakepf/app/webroot/index.php [REMOTE_PORT] => 39979 [REDIRECT_QUERY_STRING] => URL =警告[REDIRECT_URL] =>/cakepf /アプリ/ webrootに/アラート[GATEWAY_INTERFACE] => CGI/1.1 [SERVER_PROTOCOL] => HTTP/1.1 [REQUEST_METHOD] => [QUERY_STRING] => URL =アラートは[REQUEST_URI] =>/cakepf /アラート[SCRIPT_NAME] =>/cakepf /アプリ/ウェブルート/インデックスを取得します。 PHP [PHP_SELF] => /cakepf/app/webroot/index.php [REQUEST_TIME] => 1299347553

+0

以下の回答を参照してください。多分私は質問を誤解しているかもしれません。 URLを生成する具体的な例、入手しているもの、必要なものがありますか? – deceze

答えて

0

このソリューションは理想的ではないですが、少なくともそれは機能です:あなたは絶対URLが必要な場合は、trueに適切なパラメータを設定します。私の生産システムでは、私はpaths.phpに次の行を追加します。

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

これは、すべてのURLがプロキシサーバーを経由することを保証します。

dev/test私はローカルでのみ作業していますが、私はそのラインをコメントアウトします。

3

ケーキのハンドルと相対あなたがをハードコードしていない限り、URLはうまくいきます。
URLを指定するときは、ターゲットのコントローラとアクションの観点から常に行う必要があり、Cakeに実際のURLを把握させる必要があります。

array('controller' => 'foos', 'action' => 'bar')は、/foo/bar,/project/cake/foo/barまたはその他の適切なものに動的に変換されます。

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/alerts。しかしwww。 .comは単にプロキシであり、実際にはcakeはtestdataloadというホスト名で実行されています。ユーザーがhttp:// www。 .com/cakepftest/alertsがログインする前に、http:// testdataload/cakepftestにリダイレクトされます。 AuthComponentはうまく構成されているようです。すべての動作はリダイレクトの問題以外には予想どおりです。 – opike