PhpStormを使用しています。 index.php
を実行して開くことはできますが、送信ボタン(サインインの投稿)を押したい場合、そのディスプレイ404が見つかりません。
Windows 10で実行されるWebサーバーApache 2.4。
これは私の家です
これは私のルートです
特にこれが一般的な問題であり、Laravel環境に新しい人がいるため、その原因が隠されている可能性があるため、なぜすべての反対票が投じられたのかは完全にはわかりません。これは古い投稿であることを知っています。 、しかし私は将来の初心者のためにここにそれを追加します。
まず、コマンドラインから(プロジェクトのルートディレクトリから)php artisan route:list
を実行することをお勧めします。これは、Laravelが登録できるすべてのルートを一覧表示し、エラーがある場合は通常、ここに表示されます。
2つ目の提案は、URLがルートと一致することを確認することです。ルートが/insertStudent
として定義されているときにフォームが/admin/insertStudent
のようなものに投稿されたという理由だけでルートが404を返した理由を理解しようとした回数はわかりません。
3つ目は、呼び出すメソッドが存在することを確認することです。あなたのメソッドは本当にpostSignIn
とpostInsertStudent
であり、単にSignIn
とInsertStudent
ではないのですか? URLとメソッド名はどちらも大文字と小文字が区別され、ルート、呼び出されるURL、および要求を受信するメソッドを定義する場所と一致する必要があることに注意してください。
最後に、すべてが確認できたら、php artisan route:clear
を実行することをお勧めします。これにより、ルートキャッシュがリセットされます。
私は同じ問題を抱えていて、次のように修正しました
.htaccessファイルを編集しました
RewriteEngine On
RewriteBase /path/of/project/folder/
# change above to your site i.e., RewriteBase /whatever/public/
それがあなたのために働くことを願っています
正しいAccept
ヘッダーを追加したことを確認してください。
私の場合、api
エンドポイントにアクセスしようとしましたが、受信するたびに404リソースが見つかりませんでした。追加したときAccept: application/json
header一致したルートから応答を受け取りました
これは古い質問ですが、まだアクティブです。 Windowsユーザーの場合、プロジェクトフォルダーで[〜#〜] capital [〜#〜]文字(大文字)を使用する場合は、ブラウザーでも同じように使用する必要があります。プロジェクトが"c:\xampp\htdocs\MyProject\"
上記のプロジェクト(MyProject)の例では、MyProject
ではなくmyproject
をURLとして使用する必要があります。
Route::get('/dashboard', function () {
return 'welcome to dashboard!';
});
あなたが使うならうまくいくでしょう:
http://MyProject/dashboard
ただし、ディレクトリでは小文字を使用する方が良い
試す
php artisan route:clear
php artisan route:cache
次にこれを入力して、ルートがリストに存在するかどうかを確認します
php artisan route:list
また、Middleware\VerifyCsrfToken.phpでは、ポストポストルートが許可されています
class VerifyCsrfToken extends Middleware {
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
'api/*'
];
}
渡されたURLがルートで同じであることを確認してください。フォームのパラメータとアクションを確認してください。明確な答えを得るためにあなたのMVCを投稿してください
2020年更新
上記で発生した多くのケースがあります。私は長い間会ったケースをもう一度しましたが、私はまだ忘れており、時々私は理由がわかりません。これは一部のURLパターンが同じです。例abc.com/c/{get_an_id}およびabc.com/c/get_textです。順序を変更できますが、最初に実行できるのは2番目のURLの404だけです。
忘れないでください、URLはフォルダ名の大文字と小文字を区別します
サーバーポートの変更は、いくつかの修正をすべて試してもうまくいかなかったため、うまくいきました。 loalhost:3000で実行していて、localhost:4000に変更しました。これは、いくつかのメモリの問題と関係があるのではないかと思います
最近同じ問題が発生し、- PHPの予約語のリスト にない予約語を使用していると思いました。
もともと私のRoutes/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']);
これは問題の原因の説明ではありませんが、おそらくこの回避策が役立ちます。
Apacheに次の情報を設定してください。
in /path/to/Apache2/installation/conf/httpd.conf
以下の情報を追加します
<Directory "path/to/laravel/project/public">
Allowoverride All
</Directory>
パブリックフォルダにある.htaccessファイルには、次のものが含まれていることを確認してください
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
Options +FollowSymlinks
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
Mod_rewriteモジュールを必ず有効にしてください
Sudo a2enmod rewrite
ルートの順番を忘れないでください。たとえば、/path/second
に移動して、次のルートを登録する場合は、
Route::get('/path/{dynamic_second}', 'Controller@actionDynamic');
Route::get('/path/{dynamic_second}/{dynamic_third}', 'Controller@third');
Route::get('/path/second', 'Controller@action');
second
は/path/{dynamic_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');