終了スラッシュを処理する方法を書き直す

私はディレクトリに来るものを別のディレクトリにリダイレクトしようとします。私が使用しているrewriteruleコマンドは次のとおりです:

RewriteRule ^VirtualDirectory(.*)$ GENS/RealDirectory$1 [L,NC]

問題は、VirtualDirectoryの終了スラッシュがないクエリが、VirtualDirectory /

私が得る行動は次のとおりです:

VirtualDirectoryへのクエリ/ユーザーが気づかないうちにうまくいく VirtualDirectoryへのクエリは素晴らしいですが、brwoserに表示されるURLは次のとおりです:GENS/RealDirectory /

私は多くのことを試しましたが、私が望む動作を得ることができません。

ルールを追加すると

RewriteRule ^VirtualDirectory$ GENS/RealDirectory/ [L,NC]

その特定のケースを処理するためには、ページのすべてのリソースがVirtualDirectoryより前のフォルダに書き換えられる

0

1 答え

何が起こっているのかは、内部の書き換えが後続のスラッシュなしで起こっていることです。その後、mod_dirが引き継ぎ、ブラウザは同じURLにリダイレクトされますが、末尾にスラッシュが付きます。 .htaccessファイルで DirectorySlash Off を使用して、mod_dirを無効にすることができます。後続のスラッシュを常に使用する場合は、ルールを次のように変更してみてください。

RewriteRule ^VirtualDirectory/?(.*)$ GENS/RealDirectory/$1 [L,NC]
0
追加された
答えをありがとう。 DirectorySlash Off が内部サーバーエラーを引き起こします。私がコメントし、あなたが指定したルールを使用すると、書き直しはうまくいきますが、ウェブページだけに役立ちます。すべてのリソース(画像、...)は、代わりに mywebsite.fr/myhtaccessDirectory に書き換えられます(?) mywebsite.fr/myhtaccessDirectory/GENS/RealDirectory
追加された 著者 user1018233,