404未找到,但路线存在于Laravel 5.4中
我在用PhpStorm。我可以运行并打开404未找到,但路线存在于Laravel 5.4中,laravel,laravel-5,phpstorm,laravel-5.4,Laravel,Laravel 5,Phpstorm,Laravel 5.4,我在用PhpStorm。我可以运行并打开index.php,但是当我想按提交按钮(post sign in)时,它的显示404找不到 运行在Windows 10上的Web服务器Apache 2.4 这是我的家 这是我的路线 确保传递的url在路由中是相等的。检查表单中的参数和操作。要在mvc上获得清晰的答案,请确保在/path/To/apache2/installation/conf/httpd.conf <Directory "path/to/laravel/project/
index.php
,但是当我想按提交按钮(post sign in)时,它的显示404找不到
运行在Windows 10上的Web服务器Apache 2.4
这是我的家
这是我的路线
确保传递的url在路由中是相等的。检查表单中的参数和操作。要在mvc上获得清晰的答案,请确保在
/path/To/apache2/installation/conf/httpd.conf
<Directory "path/to/laravel/project/public">
Allowoverride All
</Directory>
然后启用Apachemod_rewrite
模块:
sudo a2enmod rewrite
dontforget,url对文件夹名的大小写很敏感,我不太清楚为什么会有这么多反对票,特别是因为这是一个常见的问题,对于刚接触Laravel环境的人来说,原因可能是隐藏的。我知道这是一篇老文章,但我把它添加到这里是为了将来的新手 我建议尝试的第一件事是从命令行(从项目根目录)运行
php-artisan-route:list
。这将列出Laravel可以注册的所有路由,如果有任何错误,通常会显示在这里
我建议的第二件事是确保URL与路由匹配。我无法告诉您我有多少次试图弄清楚为什么我的路线返回404,仅仅是因为我的表单在我的路线定义为/admin/insertStudent
时发布到类似/insertStudent
的位置
我建议的第三件事是确保您调用的方法存在。您的方法是否真的被称为postSignIn
和postinsertstudio
,而不仅仅是SignIn
和InsertStudent
?请记住,URL和方法名称都区分大小写,并且应该与定义路由的位置、调用的URL和接收请求的方法相匹配
最后,如果所有这些都符合要求,我建议您尝试的最后一件事是运行
php artisan路由:clear
。这将重置路由缓存。在尝试了几次修复后,更改服务器端口对我来说很有效,但都没有效果。我在loalhost:3000上运行,并更改为localhost:4000。我想这可能与一些内存有关,因为我也有同样的问题,并通过以下方法解决了
我有一个edit.htaccess文件
RewriteEngine On
RewriteBase /path/of/project/folder/
# change above to your site i.e., RewriteBase /whatever/public/
希望它对您有用确保您添加了正确的
Accept
标题
在我的例子中,我试图访问api
端点,但每次都没有找到收到的404资源。
当我添加了
Accept:application/json
标题时,我从匹配的路由得到了响应这是一个老问题,但仍然是活动的。
对于windows用户,如果在项目文件夹中使用大写字符(大写字母),则应在浏览器中使用相同的字符。
如果您的项目位于“c:\xampp\htdocs\MyProject\”
中,您应该使用MyProject
作为url,而不是MyProject
例如,在上述项目(MyProject)中,以下路线:
Route::get('/dashboard', function () {
return 'welcome to dashboard!';
});
如果您使用:
http://MyProject/dashboard
但是在目录中使用小写字符更好我最近也遇到了同样的问题,我认为我使用了一个保留字,我在目录中找不到它 最初我的路由/web.php是:
Route::post('sysinfo/store',['as'=>'sysinfo.store', 'uses'=>'SysinfoController@store']);
在我换了另一个名字后,如下图所示,它成功了
Route::post('newsysinfo/store',['as'=>'newsysinfo.store', 'uses'=>'SysinfoController@store']);
奇怪的是我还有其他工作路线,比如:
Route::get('sysinfo/',['as'=>'sysinfo.index', 'uses'=>'SysinfoController@index']);
Route::post('sysinfo/{sysinfo}',['as'=>'sysinfo.update', 'uses'=>'SysinfoController@update']);
Route::get('sysinfo/create',['as'=>'sysinfo.create', 'uses'=>'SysinfoController@create']);
Route::get('sysinfo/{id}/edit',['as'=>'sysinfo.edit', 'uses'=>'SysinfoController@edit']);
Route::get('sysinfo/{sysinfo}/destroy',['as'=>'sysinfo.destroy', 'uses'=>'SysinfoController@destroy']);
虽然这不是对问题原因的解释,但也许此解决方法可以帮助您。不要忘记路线的顺序。例如,如果要转到
/path/second
并注册以下路由:
Route::get('/path/{dynamic_second}', 'Controller@actionDynamic');
Route::get('/path/{dynamic_second}/{dynamic_third}', 'Controller@third');
Route::get('/path/second', 'Controller@action');
这将中断,因为/path/{dynamic_second}
消耗了/second
如果您想访问/path/second
,必须按如下方式列出您的路线:
Route::get('/path/second', 'Controller@action');
Route::get('/path/{dynamic_second}', 'Controller@actionDynamic');
Route::get('/path/{dynamic_second}/{dynamic_third}', 'Controller@third');
试一试
然后键入此项,查看列表中是否存在您的路线
php artisan route:list
并且在中间件\VerifyCsrfToken.php中也允许检查post路由
class VerifyCsrfToken extends Middleware {
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
'api/*'
];
}
更新2020
上面发生了很多案例,我又遇到了一个案例,但我还是忘记了,有时我不知道为什么。这是一些url模式是相同的,例如abc.com/c/{get_an_id}和abc.com/c/get_text。您可以更改顺序,但只有第一个可以运行,第二个url为404。我也遇到了同样的问题&通过更改路由的排序方式解决了这个问题 之前:
Route::get('/p/{post}', 'PostsController@show');
Route::get('/p/create', 'PostsController@create');
之后:(而404消失了)
我也有同样的问题,但解决方法很简单: 转到cmd并点击cd#您的项目路径# 然后点击php artisan serve
将给定服务器()的链接复制到您的浏览器中,它就会工作 我为我的路线不起作用而发疯,这里还有一个快速修复方法。我的路线如下:
users/{user}/user-detail-changes/{user-detail-change}/updatestatus
修复方法是重命名参数。Laravel不接受减号
-
。
相反,您必须使用camelCase
或下划线(\uu
)变量命名约定所以它必须是这样的:
users/{user}/用户详细信息更改/{userDetailChange}/更新状态
你好!!我以前也遇到过这个问题。请检查Apache的httpd.conf文件。通过从代码的起始行删除#
,确保启用了LoadModule rewrite\u module modules/mod\u rewrite.so
还可以在httpd.conf中从Require all denied更改为Require all grated、AllowOverride all和Options索引FollowSymLinks
像这样:
也许这对某人有帮助,我解决了这个问题,改变了我在拉雷维尔的路线 在我的例子中,我遇到了路由..users/crea-->404错误
Route::get('users','Admin\UserController@ind
class VerifyCsrfToken extends Middleware {
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
'api/*'
];
}
Route::get('/p/{post}', 'PostsController@show');
Route::get('/p/create', 'PostsController@create');
Route::get('/p/create', 'PostsController@create');
Route::get('/p/{post}', 'PostsController@show');
# disable directory browsing, but specific file browsing is possible, e.g. /js/bootstrap.js
Options ExecCGI Includes IncludesNOEXEC SymLinksIfOwnerMatch
#To set which file will be acted as index file: DirectoryIndex index.php
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
<Files 403.shtml>
order allow,deny
allow from all
</Files>
# deny from some DDoS attackers ip
# deny from 69.171.251.0/24
# php -- BEGIN cPanel-generated handler, do not edit
# This domain inherits the “PHP” package.
# php -- END cPanel-generated handler, do not edit