0

ルート フォルダーからサブ フォルダーにリダイレクトし、そのフォルダーをマスクするにはどうすればよいですか?

したがって、 http://root.com/sub_folderの代わりに

http://root.comになります。

私が試してみました:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^root\.com$
RewriteRule (.*) http://root.com/$1 [R=301,L]
RewriteRule ^$ /sub [L]

しかし、それはうまくいきません。どんな助けでも大歓迎です。

4

1 に答える 1

0

あなたが探していると私が思うものを明確にするために:

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 以降でしか利用できないことです。そのため、古いバージョンを使用している場合は、よりトリッキーな操作を行う必要があります。

于 2013-02-14T03:51:41.257 に答える