哎呀!有一个错误。 NotFoundHttpException异常

Whoops! There was an error. NotFoundHttpException

我看到当资源名称包含加号 (+) 时 Laravel 无法获取资源

Symfony\Component\HttpKernel\Exception\NotFoundHttpException

GET http://localhost:8000/vendor/store/store+json2.min.js 404 (Not Found)

GET http://localhost:8000/vendor/animo/animate+animo.css 404 (Not Found)

REQUEST_URI /vendor/store/store+json2.min.js
REQUEST_METHOD  GET
SCRIPT_NAME /vendor/store/store json2.min.js

REQUEST_URI /vendor/animo/animate+animo.css
REQUEST_METHOD  GET
SCRIPT_NAME /vendor/animo/animate animo.css

我可以通过删除加号更改文件名来解决这个问题。但是有什么办法可以不改变文件名吗?

我正在使用 Laravel 4。*

路由文件中的内容如下:

Route::get('/', function()
{
    return View::make('hello');
});

// Confide routes
Route::get('users/create', 'UsersController@create');
Route::get('users/create/{plan}', 'UsersController@create');
Route::post('users', 'UsersController@store');
Route::get('users/login', 'UsersController@login');
Route::post('users/login', 'UsersController@doLogin');
Route::get('users/confirm/{code}', 'UsersController@confirm');
Route::get('users/forgot_password', 'UsersController@forgotPassword');
Route::post('users/forgot_password', 'UsersController@doForgotPassword');
Route::get('users/reset_password/{token}', 'UsersController@resetPassword');
Route::post('users/reset_password', 'UsersController@doResetPassword');
Route::get('users/logout', 'UsersController@logout');

Route::resource('categories', 'CategoriesController');
Route::resource('forms', 'FormsController');
Route::resource('submissions', 'SubmissionsController');

实际问题是由于某种原因,两个重写条件:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

无法正确处理您的请求。他们应该防止文件请求被代理到 Laravel。这似乎也与环境有关。 (在我的本地服务器上它工作得很好)

一个显然有效的解决方法是用 URL 编码值 %2B 替换 +
或者只使用 urlencode():

urlencode('http://localhost:8000/vendor/store/store+json2.min.js')