PHP - Laravel - 設定 - URI 末尾のスラッシュ

 クラウディア
1. 概要
2. 設定 失敗1
3. 設定 失敗2
4. 設定

1. 概要

 「URL」の末尾のスラッシュ。  専門的に言うと、「trailing slash」ちゅうことになりますな。  「/index.html」「/index.php」と書く代わりに「/」のみを書いてやるという・・・。  で・・・。

https://ドメイン/サブディレクトリ/
 にアクセスさせているのに

$_SERVER['REQUEST_URI']
 を見てみると

/サブディレクトリ
 になっておる。  昔々、「index.html」にアクセスさせるには、末尾にスラッシュを付けた方が早いのよと言われて、その言いつけをずっと守っていたのに。  本ページは、下記のサイトを参考にさせていただきました。
【htaccess】URL の最後に「/」を付ける方法
 途中、下記のサイトを参考にさせていただきました。
Laravel で URL 末尾のスラッシュを付ける方法。 」
「laravel でトレイリングスラッシュを有効にする方法
 実は、他に、ソースコードをいじる方法が、下記のサイトにあったのですが
Laravelで /(トレイリング スラッシュ)がついている URL を扱うには」
「Laravel でトレイリングスラッシュを使う方法」(2024年8月6日、リンク切れになりました)
 これを真似ようとしたのですが、どうにもエラーになっちゃうので・・・。  結局「.htaccess」をいじるのが、行数も少ないし、お手軽なので・・・。  うまく動かなくなったら、また考えます。

2. 設定 失敗1

 仕掛けは

public/.htaccess
 の

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]
 であります。  全部、コメントアウトして、代わりを書くのだそうな。

    # Redirect Trailing Slashes If Not A Folder...
    #RewriteCond %{REQUEST_FILENAME} !-d
    #RewriteCond %{REQUEST_URI} (.+)/$
    #RewriteRule ^ %1 [L,R=301]

    # Add Trailing Slash If Not A File...
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} (.+[^/])$
    RewriteRule ^ %1/ [L,R=301]
 ですと。  この設定、一回やって、また元に戻したのは何故だったろう?  今、記憶にないので、再度設定するのだ(2022年6月9日)。

3. 設定2

 で、その日のうちに思い出したのだ。  前項の設定を行うと・・・。  すべてのページに「/」がついちゃうのです。  つまり

https://freebsd.sing.ne.jp
 上が下になるのはいいというか、それを意図しているのですが

https://freebsd.sing.ne.jp/
 意図しないことに

https://freebsd.sing.ne.jp/hogehoge.html
 が

https://freebsd.sing.ne.jp/hogehoge.html/
 になっちゃうのです。  これは、「404」になるのがあたり前ですわな。  今度は

public/.htaccess
 の

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]
 をコメントアウトするところまでは同じで。  代わりに書くものが

    
    #「/」補完
    RewriteCond %{REQUEST_URI} !/$
    RewriteCond %{REQUEST_URI} !\.[^/\.]+$
    RewriteRule .* %{REQUEST_URI}/ [R=301,L]
 になります。  今度は、すぐにアホなことには、なっておりませぬ。  スクレイピングチェックしてみますか・・・。

4. 設定

 前項の設定を行って、スクレイピングチェックを行ったり、自分の目で確かめたりしていましたが・・・。  自分で確認すると、明らかに、遅いし、サーバ側で、「httpd」が、異常にぶん回っているようなのです。  えっと、これを詳しく説明できない。  とりあえず、リダイレクトがばんばん、起こっているようなのです。  「「リダイレクトが繰り返し行われました。」のエラーとは?リダイレクトループの原因と対処法」に掲載されているような、サーバ側の状態ですな。  う~ん。困った。  で、よくわからないなりに、「.htaccess」を再度ながめているとどうも

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]
 が、「/」がついているものをとっぱらっちゃってるんだな。  単に、これを全部コメントアウトしてみました・・・。  すると、あら不思議(いや、不思議でもなんてもねぇんだがな)。  意図通り、少なくとも、最上位以外は、「/」がキープされるようになりました。  なんだぁ・・・。  リダイレクトなくしゃいいのかと、勢い余って


    # Send Requests To Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
 の部分までコメントアウトしようとしましたら、何も表示できなくなりましたので、ここまで消しちゃダメってことですな。  まだ不十分なのが。  最上位の「/」が消せないこと。  内部の「<img src="" alt="">」で記述している画像ファイルが存在しないとき、気が遠くなるほど表示更新に時間がかかること。  なのですが、前よりはまし。
ハイスピードプラン損保との違いそれがだいじWi-Fi