2025/04/05(土)サイトURLのサブフォルダ名

サイトURLのサブフォルダ名を表示させたくないと思い、少し調べてみました。
下の画像の「/ad」を.htaccessのRewriteRuleで表示させないようにします。

このサイトはadiaryというCMSを使っていて、記述の仕方はマニュアルに書かれていました。
mod_rewriteの設定
サイトのディレクトリ構成にあわせて記述した内容は以下の通り。
・.htaccessの内容
RewriteEngine On RewriteRule ^ad/ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ ad/$1 RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ad/(.*)$ ad/adiary.cgi/$1 [L]
内容がよく分からなかったのでChatGPTに聞いてみました。
このコードは、Apacheの.htaccessファイルなどで使われる**mod_rewrite(URLの書き換え)**の設定です。やりたいことはできたので良いのだけど、ChatGPTの回答は半分くらいしか分かりません。
以下にそれぞれの行の意味をわかりやすく説明します:
🔧 全体の目的
このルールは、adiary.cgiというCGIスクリプトにリクエストを転送することで、静的なURLを使っても内部的にはCGIが動くようにする構成です。
1. RewriteEngine On
URLの書き換え(mod_rewrite)を有効にする。
2. RewriteRule ^ad/ - [L]
ad/ で始まるURLパスには書き換えを行わない。
[L] は「このルールが適用されたら、以降のルールは無視する」ことを意味します。
例: /ad/index.html → そのまま通す(書き換えしない)
3. RewriteCond %REQUEST_FILENAME !-f
次のルールを適用するのは、「実在するファイルではない」とき。
4. RewriteRule ^(.*)$ ad/$1
実在するファイルでない場合、ad/ディレクトリの中にリダイレクトする。
例: /blog → ad/blog にリライト(ただし blog というファイルがなければ)
5. RewriteCond %REQUEST_FILENAME !-f
再び「ファイルが存在しない」ことを確認。
6. RewriteRule ^ad/(.*)$ ad/adiary.cgi/$1 [L]
ad/以下のパスがファイルでなければ、ad/adiary.cgi/パス に内部転送する。
[L] は、これが最後のルールであることを示します。
例: ad/blog/2023 → ad/adiary.cgi/blog/2023 に内部転送
🧠まとめると:
/blog → ad/blog → ad/adiary.cgi/blog
ただし、すでにファイル(例: ad/index.html)が存在する場合はそれを表示