実際のディレクトリにディレクトリ スラッシュを追加する方法は理解していますが、ユーザーが example.com/website/blog/entries ( /blog と /entries は両方とも仮想ディレクトリ) にアクセスしたときに、末尾のスラッシュを仮想ディレクトリに追加する必要があります。 )、URL アドレスは物理的に次のように変更されます: example.com/website/blog/entries/
これは、偽の/仮想ディレクトリをphpスクリプトのパラメーターに変換するために機能する、現在機能しているhtaccessコードです。
RewriteRule ^/?([a-zA-Z_\-/.]+)$ index.php?file=$1 [L,QSA]
このRewriteRuleは、 example.com/website/blog/entries/ をexample.com/website/index.php?file=blog/entries/のように、ユーザーではなく PHP だけに見せます。
以下は、私が試みたが役に立たなかった書き換えルールの一部です。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .*[^/]$ %{REQUEST_URI}$1/ [L,R=301]
# -----------------------------------------------
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^.+/$ %1 [R=301,L]
問題は、仮想ディレクトリをパラメーターに変換する現在の正規表現が「/」で始まるディレクトリ名を検索するためだと思います。そのため、サイトがルートフォルダー (「/」) にインストールされていない場合、または末尾のスラッシュは、完全に間違ったものにリダイレクトします。パスは常に変化するため、htaccess ファイルのどこにもフォルダー パスを書き込むことができません。たとえば、次のようなものは使用できません。
RewriteRule ^(.*)$ http://localhost:8888/project/$1/ [L,R=301]
仮想ディレクトリを PHP パラメータに変換する前に、実際のディレクトリと仮想ディレクトリに末尾のスラッシュを強制する方法はありますか?