2016-07-12 8 views
0

私は直接アクセスするとうまく動作するLaravel 4の設定を持っています(たとえば、10.1.1.4にナビゲートすると、ウェブサイトは正常です)。特定のIPからの要求であればルートルートを設定します

しかし私たちはサーバーにproxy_pass要求を実行するnginxサーバーを持っています。この問題は、proxy_passが最初のリクエストで機能する10.1.1.5/tttに行く場合にのみ実行されますが、すべてのリソース/リダイレクトが壊れてしまうことがあります(/tttのURL生成を使用しているためLaravel 4.

だから私の質問は、私は根がにリダイレクトされるためにどの設定dynamiclyだから、あなたがウェブサイトにアクセスした場合、それは次のようにリダイレクトする指示することができますどのように非常に簡単です:?

return Redirect::to('/login'); 

しかし、もし。あなたはリダイレクト先のnginxからアクセスします:

return Redirect::to('/ttt/login'); 

私は既に$_SERVER変数をチェックしました。SERVER_NAMEは、nginxのIPを保持しています。だから、それは静的なので、私はSERVER_NAMEがnginxのIPと等しい場合にチェックを行うことができます。問題は、私はさらに何をすべきか分からないということです。 「接頭辞」を保持するグローバル変数を作成するか、またはすべてのURL生成に/tttを追加する別の方法はありますか?同じ問題を持つ人々のために

答えて

0

、ここに私の汚いハックだ:

私はその後、私はRoute::group

Route::group(['prefix' => REQ_NGINX ? 'ttt' : ''], function() { 
    Route::get('/',    '[email protected]'); 
    ..... 
}); 
内のすべてのルートを包ん public/index.php

define('REQ_NGINX', ($_SERVER['SERVER_NAME'] == '10.1.1.5'));    // boolean 
define('TTT_URL', 'http://' . $_SERVER['SERVER_NAME'] . (REQ_NGINX?'/ttt':'')); // without leading slash!!! 

で2つの定義を作成しました

これは、すべてのルートの前にttt文字列を追加します。IF REQ_NGINX次に、私が編集したtrue

に等しいファイルベンダー/ laravel /フレームワーク/ SRC /ルーティング/ UrlGenerator.php /照らしなさい:
コンストラクタの終わりに、私はこの行を追加しました:

$this->forceRootUrl(TTT_URL); 

そして、最後のステップは.htaccessを編集し、次の行に、BEFORE index.php

RewriteCondを追加しました離れCSS、JSのためのTTTの一部を除去します3210

...ファイルが

私はこの自己答えは、この同じ問題を抱えて将来的に誰かを助けることを願っています。長い間この問題に取り組んできました。それにもかかわらず、より良い/よりクリーンなソリューションを見つけた場合は、この質問に答えることをためらってください。

関連する問題