PHP - Laravel - ルーティング - 設定


 クラウディア


1. 概要
2. get
3. post
4. any
5. リダイレクト

1. 概要

 本ページは、下記のサイトを参考にさせていただきました。
Laravel のルーティングチートシート」
「【入門】Laravel の Controller について
 ルーティングの確認方法は、別ページに記載しています。

2. 設定

 ルーティングの記述は

ドキュメントルート/routes/
 中に書いてあって。  今のところ(2021年3月18日)

ドキュメントルート/routes/web.php
 しかさわっていません。  「バージョン 8.33.1」のデフォルトでは、コメントをのぞけば、前半の  [/home/hogehoge/lang/php/laravel/laravel8.33.1/routes/web.php] というファイルが、なかったですじゃ・・・。  の部分と後半の  [/home/hogehoge/lang/php/laravel/laravel8.33.1/routes/web.php] というファイルが、なかったですじゃ・・・。  の部分のみです。

3. post

 なるほどな、とデフォルトのを真似て、全部「get」で書いておりました。  で、リンクチェックを自作の「Python」のプログラムでやっておるのですが・・・。  いきなり、ルートの

requestLink = request.Request(URI, data='データ', headers='ヘッダ', method='POST')

html = urllib.request.urlopen(requestLink, timeout=10)
 で

HTTP Error 405: Method Not Allowed
 てなエラーになっちゃいました。  これ「post」を送っているからだそうで

Route::get('/', function () {    return view('ビュー');	});
 と同時に

Route::post('/', function () {    return view('ビュー');	});
 も書かないとエラーになっちゃうようです。

4. any

 しかし、2行ずつ書くのは面倒だなと思っていたら、下記の書き方があるようです。

Route::any('/', function () {    return view('ビュー');	});
 これだと、「get」「post」どちらも処理してくれるようです。  しかし、参考サイトに「基本使わないけど」って書いてあるのが気になりますけどね。  わたしは、逆に特定のサイトでは、「any」しかつかってません。

5. リダイレクト

 多分、こゆことしている方、そこそこいらっしゃるんじゃないかと思うのですが、「404 not found」が発生したとき、特定のページへリダイレクトするという・・・。  他のエラーでもしている方もいらっしゃるようです。  今まで、「/usr/local/etc/apache24/Includes/*.conf」に

<VirtualHost    *:80>
    ServerName          サーバ名
    DocumentRoot        /パス
    ErrorDocument       404     /リダイレクト先
</VirtualHost>
 てな書き方をするか、「.htaccess」でリダイレクト先を書くかすれば、うまくいっていたのですが、「Laravel」では、そうはいかないようです。  上記の書き方で解説しているサイトが、そこそこあるのですが、バージョン違いのためか、うまくいかない。  下記のサイトの内容で、うまくいきました。
Laravel 存在しないページにアクセスされたとき404ページではなく特定のページにリダイレクトさせる方法 – 半力投球
 すなわち

routes/web.php
 に

Route::fallback(function()
{
	return redirect('転送先');
});
 と書けば、思い通りになります。  ただし、今んとこ、転送先は、フルドメインで書く方法しか知りません。

AbemaTV 無料体験