[英]Laravel Redirect::route() going to wrong url on vhost
我今天正在處理一些代碼,並發送了Redirect::route()
。 它沒有像通常那樣重定向到base_url / route,而是像這樣復制了base_url:
http://myurl.dev/http://myurl.dev/myroute
我以為自己做錯了什么,所以我回過頭來試圖找出問題所在。 我最終以一個新的虛擬主機開始了一個新項目,並將這小部分代碼放入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並沒有發現錯誤,因為沒有找到http://myurl.dev/http://myurl.dev/test2找到。 這僅在Redirect::route()
,它按預期在Redirect::to()
。 它也僅在虛擬主機上發生。 如果我轉到localhost / myurl / public / test1,則Redirect::route()
按預期工作。 有任何想法嗎?
更新:
我被要求進行我的虛擬主機設置。 我在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
。
問題似乎與URL中帶有下划線(未通過FILTER_VALID_URL)有關:
https://github.com/laravel/framework/issues/2511
(由於我正在整理此內容以幫助其他人尋找解決方案,因此我的回答不值得我信任)
試試這個方法:
Route::get(
'test1',
[
'as' => 'test1',
function () {
return Response::make('', 302)->header('Location', route('test2'));
}
]
);
Route::get(
'test2',
[
'as' => 'test2',
function () {
return 'test2hello';
}
]
);
如您所見,我們使用Response類, Redirect自身使用它來發送標頭位置:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.