目標:
共有 Apache 2.2 ボックス上の仮想サーバーで、フォルダーのサブフォルダー内のファイルをルートにあるかのよう.htaccessにシームレスに表すように構成しようとしました。public_html
つまり、ユーザーが にアクセスするとき、http://www.example.com/homeシームレスに(クライアント ブラウザーで URL を書き換えずに)からファイルを表示する必要がありますhttp://www.example.com/subfolder/home。
私の.htaccessファイルは次のようになります。
RewriteEngine on
RewriteRule !^subfolder/ subfolder%{REQUEST_URI}
問題:
これは機能しますが、クライアント ブラウザの URL を書き換えます。
つまり、ユーザーはhttp://www.example.com/subfolder/home/アドレスバーに表示されますが、表示する必要があるのはhttp://www.example.com/home
私が行ったことは.htaccess、エンドユーザーには見えない「内部」の書き換えになるはずですが、「外部」の書き換えが行われているようです。
私は何を間違っていますか?
[編集] 追加の詳細:
ユーザーが にアクセスするwww.example.comと、から提供されたホームページ コンテンツがユーザーに表示され、ブラウザのアドレス バーに と表示されるという点で、期待どおりに機能します。public_html/subfolder/default.htmlwww.example.com
ただし、ユーザーがそのホームページ (コード化されたhref="/contact") の「連絡先」リンクをクリックすると、そこにwww.example.com/subfolder/contact/到達しますが、内部の書き換えではなくリダイレクトを行ったかのように、ブラウザーのアドレス バーに表示されます。
その後、アドレス バーのテキストを削除し/subfolderてページを強制的にリロードすると、機能します。正しいコンテンツが読み込まれ、アドレス バーは残ります。www.example.com/contact/
実装上の注意:役立つ場合public_html/subfolder/contactは、ファイルを含むフォルダーです。default.html
別の観察:
新しいタブを開いてwww.example.com/contact/ (末尾のスラッシュに注意してください)と入力すると、期待どおりに機能します。
しかし、新しいタブを開いてwww.example.com/contact (末尾のスラッシュなし)と入力すると、 にリダイレクトされますがwww.example.com/subfolder/contact/、これは望ましくありません。
何が悪いのか教えてくれるはずだと思いますが、答えはまだわかりません。