【问题标题】:Whoops! There was an error. NotFoundHttpException哎呀!有一个错误。 NotFoundHttpException
【发布时间】:2015-04-03 11:19:03
【问题描述】:

当资源名称包含加号(+)时,我可以看到 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');

【问题讨论】:

  • 我们可以查看您的路线吗?
  • @lukasgeiter 请再次检查我是否更新了 routes.php 内容
  • 等一下,您是否尝试使用浏览器访问供应商目录中的文件??
  • 是在公共文件夹中:myproject/public/vendor/
  • 嗯。如果您使用%2B 而不是+,它是否有效?

标签: laravel laravel-4 laravel-routing


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 2017-10-12
    • 2012-08-01
    相关资源
    最近更新 更多