- 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('転送先');
});
と書けば、思い通りになります。
ただし、今んとこ、転送先は、フルドメインで書く方法しか知りません。
|