在Laravel 5.3中,我的路线(web.php
)文件出现问题。当用户将变量$url
设置为" www.website.com"一切都很好,但如果他输入" http:// www.website.com"该参数正被' /'并显示错误。如何克服这个问题?
Route::get('/result/{url}', function($url){
return view('result', ['url'=>$url]);
});
答案 0 :(得分:1)
经过测试,Laravel似乎对网址进行解码并将%2f
视为/
,从而导致您获得404错误。
解决方法是更改路径定义以允许参数中的所有字符。以下是您需要更改的内容:
Route::get('/result/{url}', function($url){
return view('result', ['url'=>$url]);
})->where('url', '.*'); // allows all chars in the `url` parameter
此.*
约束将允许此参数接受任何字符。此方法的缺点是此参数需要是最后一个,因为它会占用所有正斜杠,并且您将无法分隔任何其他路径参数。
答案 1 :(得分:0)
由于/
中的http://www.website.com
分隔了网址,因此您无法将其用作网址中的资源。你可以通过创建爆炸url:
http://
function explodeURLIfNeeded($url) {
$url = end(explode('/', $url));
return $url;
}