我正在使用Laravel 4 Beta 5开发一个网站,我正在尝试将编码的URL传递给路由器。问题是,编码的URL中有百分比等,因此它被Laravel阻止。该URL使用Javascript函数encodeURIComponent()
进行编码。
有没有办法覆盖Laravel所以我可以在路线中使用任何角色?
这是我目前的代码:
Route::get('add/{encoded_url}', function($encoded_url)
{
return 'The URL is: '.rawurldecode($encoded_url);
});
我试图通过追加where('encoded_url', '*reg-ex*');
来覆盖Laravel,但它不起作用(我对reg-ex,btw不太好。)
答案 0 :(得分:12)
给这个正则表达式一个,它将匹配任何字符 ...
Route::get('add/{encoded_url}', function($encoded_url)
{
return 'The URL is: '.rawurldecode($encoded_url);
})->where('encoded_url', '.*');
答案 1 :(得分:2)
Phill的答案是正确的,但我还必须对我的apache设置进行更改才能使其正常工作。
我必须将以下内容添加到我的httpd.conf文件中:
AllowEncodedSlashes NoDecode
如果您看到的是Apache 404找不到的页面而不是Laravel NotFoundHttpException错误页面,那么您将需要这个。
非常明显的解释,但没有这个Apache就是解码编码的斜杠以便
http://localhost/add/http%2F%2Fwww.google.co.uk
正被路由到
http://localhost/add/http://www.google.co.uk
答案 2 :(得分:2)