2

私は今日いくつかのコードに取り組んでいて、Redirect::route(). 通常どおり base_url/route にリダイレクトする代わりに、次のように base_url を複製しました。

http://myurl.dev/http://myurl.dev/myroute

何か間違ったことをしたと思ったので、戻って問題を切り分けようとしました。最終的に、新しい vhost を使用して新しいプロジェクトを開始し、この小さなコードをapp/routes.phpに配置しました。

Route::get(
    'test1',
    [
        'as' => 'test1',
        function () {
            return Redirect::route('test2');
        }
    ]
);

Route::get(
    'test2',
    [
        'as' => 'test2',
        function () {
            return 'test2hello';
        }
    ]
);

ブラウザーでhttp://myurl.dev/test1を開くと、「test2hello」を表示するだけでなく、http://myurl.dev/http://myurl.dev/test2 が見つからなかったため、スローされ、http not found エラーが発生しました見つかった。これは でのみ発生しRedirect::route()、 で期待どおりに動作しRedirect::to()ます。また、仮想ホストでのみ発生します。Redirect::route()localhost/myurl/public/test1 にアクセスすると、期待どおりに動作します。何か案は?


アップデート:

仮想ホストのセットアップを求められました。私は Mac OSX 10.8.5 を使用しており、組み込みの Apache を使用しています。/etc/apache2/httpd.confのhttpd-vhosts.confインクルード行のコメントを外しました。/etc/apache2/extra/httpd-vhosts.confにいくつかの仮想ホストを追加しました。

<VirtualHost *:80>
    DocumentRoot "/Library/WebServer/Documents/example_blog/public"
    ServerName example_blog.local
</VirtualHost>

および/etc/hostsの対応する行:

127.0.0.1   example_blog.local

そしてApacheを再起動しました。フォルダの名前はexample_blog.local.

4

2 に答える 2

1

この方法を試してください:

Route::get(
    'test1',
    [
        'as' => 'test1',
        function () {
            return Response::make('', 302)->header('Location', route('test2'));
        }
    ]
);

Route::get(
    'test2',
    [
        'as' => 'test2',
        function () {
            return 'test2hello';
        }
    ]
);

ご覧のとおり、リダイレクト自体がヘッダーの場所を送信するために使用する応答クラスを使用しています:)

于 2014-02-18T23:37:13.513 に答える