今日、私は次の書き換えルールを書きました:
RewriteCond %{HTTP_HOST} ^visionale\.book [NC]
RewriteRule ^\/([^/]+)\/$ $1.php [L]
RewriteCond %{HTTP_HOST} ^(www\.)?visionale\.se [NC]
RewriteRule ^(.*)/$ $1.php
1 つ目は、Web ホテルの 2 つ目のルールである Apache を実行するラップトップ用です。
最初の書き換えを Web ホテルに適用すると、404 Not Found になります
私のラップトップに 2 番目のルールを適用すると、不思議なことに "pagename.php.php.php" が見つかりません。
私が提供したソリューションは両方の場所で機能しますが、実際に何が起こっているのか困惑しています。私のローカル マシンは Apache 2.4.6 を実行しています。ウェブホテルはLitespeedを運営しています。したがって、これはもちろん非互換性ですが、まさにその方法です。
私の推測では、Litespeed は機能がないために最初のルールを見逃していると思いますが、なぜ Apache は私が過去に何度も使用してきたより簡単なルールを取得しないのでしょうか?
編集:質問を明確にする。
このルール:
RewriteRule ^\/([^/]+)\/$ $1.php [L]
Litespeed を実行している Web ホテルで選択されません。これは、Litespeed の書き換え実装に欠陥があるためだと思います。その予感を確認するか、別の説明を提供したいと思います。
このルール:
RewriteRule ^(.*)/$ $1.php
私の開発マシンではもう動作しませんが、過去には動作していました。それは十分に単純に思えます。末尾のスラッシュで終わるものはすべて、代わりに「.php」拡張子を取得する必要があります。ただし、私の開発マシンでは、1 つではなく 3 つの「.php」が追加されます。ルールは Web ホテルで意図したとおりに機能し、過去にローカルでも機能しました。これは不可解であり、説明が必要です。