あなたが探していると私が思うものを明確にするために:
http://root.com
末尾のパスを指定せずに入力したユーザーをサイレントに に書き換えたいとしhttp://root.com/sub
ます。
ただし、ユーザーが直接入力した場合は、ユーザーhttp://root.com/sub
を にリダイレクトする必要がありますhttp://root.com
。
root.com 内のその他のパスはそのままにしておく必要があります。
次の 2 つのルールがこれを実現します。複数のドメインがあり、これを 1 つのドメインにのみ適用する場合は、元の RewriteCond を各 RewriteRule の前に追加します。
RewriteRule ^sub/?$ http://root.com/ [R=301,L]
RewriteRule ^$ /sub [END]
最初のルールは、末尾のスラッシュの有無にかかわらず /sub を root.com にリダイレクトします。2 番目のルールは、ベース ドメインを /sub に書き換えます。
編集:以下のJon Linのコメントによると、[L]
フラグは現在の処理ラウンドを停止するだけで、内部の書き換えはルールを介してもう一度送信されます(私は常にその部分を偽造します)。そのため、代わりに で2 行目を終了することができます。これにより[END]
、すべての書き換え処理が停止します。問題は、[END]
これは Apache 2.4 以降でしか利用できないことです。そのため、古いバージョンを使用している場合は、よりトリッキーな操作を行う必要があります。