web-dev-qa-db-ja.com

404見つかりませんが、Laravel 5.4にルートが存在します

PhpStormを使用しています。 index.phpを実行して開くことはできますが、送信ボタン(サインインの投稿)を押したい場合、そのディスプレイ404が見つかりません。

Windows 10で実行されるWebサーバーApache 2.4。

これは私の家です

index.php

これは私のルートです

web.php

19
Melvin Jeconiah

特にこれが一般的な問題であり、Laravel環境に新しい人がいるため、その原因が隠されている可能性があるため、なぜすべての反対票が投じられたのかは完全にはわかりません。これは古い投稿であることを知っています。 、しかし私は将来の初心者のためにここにそれを追加します。

まず、コマンドラインから(プロジェクトのルートディレクトリから)php artisan route:listを実行することをお勧めします。これは、Laravelが登録できるすべてのルートを一覧表示し、エラーがある場合は通常、ここに表示されます。

2つ目の提案は、URLがルートと一致することを確認することです。ルートが/insertStudentとして定義されているときにフォームが/admin/insertStudentのようなものに投稿されたという理由だけでルートが404を返した理由を理解しようとした回数はわかりません。

3つ目は、呼び出すメソッドが存在することを確認することです。あなたのメソッドは本当にpostSignInpostInsertStudentであり、単にSignInInsertStudentではないのですか? URLとメソッド名はどちらも大文字と小文字が区別され、ルート、呼び出されるURL、および要求を受信するメソッドを定義する場所と一致する必要があることに注意してください。

最後に、すべてが確認できたら、php artisan route:clearを実行することをお勧めします。これにより、ルートキャッシュがリセットされます。

23
ChronoFish

私は同じ問題を抱えていて、次のように修正しました

.htaccessファイルを編集しました

RewriteEngine On
RewriteBase /path/of/project/folder/
# change above to your site i.e.,  RewriteBase /whatever/public/

それがあなたのために働くことを願っています

3
Ram Chander

正しいAcceptヘッダーを追加したことを確認してください。

私の場合、apiエンドポイントにアクセスしようとしましたが、受信するたびに404リソースが見つかりませんでした。追加したときAccept: application/json header一致したルートから応答を受け取りました

3

これは古い質問ですが、まだアクティブです。 Windowsユーザーの場合、プロジェクトフォルダーで[〜#〜] capital [〜#〜]文字(大文字)を使用する場合は、ブラウザーでも同じように使用する必要があります。プロジェクトが"c:\xampp\htdocs\MyProject\"上記のプロジェクト(MyProject)の例では、MyProjectではなくmyprojectをURLとして使用する必要があります。

Route::get('/dashboard', function () {
    return 'welcome to dashboard!';
});

あなたが使うならうまくいくでしょう:

http://MyProject/dashboard

ただし、ディレクトリでは小文字を使用する方が良い

2
Hamid

試す

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/*'
    ];

}

1
Ruhith Udakara

渡されたURLがルートで同じであることを確認してください。フォームのパラメータとアクションを確認してください。明確な答えを得るためにあなたのMVCを投稿してください

1
Kayal

2020年更新
上記で発生した多くのケースがあります。私は長い間会ったケースをもう一度しましたが、私はまだ忘れており、時々私は理由がわかりません。これは一部のURLパターンが同じです。例abc.com/c/{get_an_id}およびabc.com/c/get_textです。順序を変更できますが、最初に実行できるのは2番目のURLの404だけです。

0
May Weather VN

忘れないでください、URLはフォルダ名の大文字と小文字を区別します

0
david valentino

サーバーポートの変更は、いくつかの修正をすべて試してもうまくいかなかったため、うまくいきました。 loalhost:3000で実行していて、localhost:4000に変更しました。これは、いくつかのメモリの問題と関係があるのではないかと思います

0

最近同じ問題が発生し、- 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']);

これは問題の原因の説明ではありませんが、おそらくこの回避策が役立ちます。

0
Iago F.

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');
0
Luke Madhanga