私はときに、ユーザーの種類test.site.com
でwww.example.com/test
の内容を表示したいです。
私はあなただけのドメインを持っているとtest.site.com
が本当に(あなたの質問の残りの部分と一致するように思われる)test.example.com
あるべきと仮定?
投稿したコードには、本当にこのリダイレクトを試みるものは何もありません。投稿したコードでは、test.example.com
のリクエストはリダイレクトされません。そうであれば、キャッシュされたレスポンスが表示されている可能性があります。ブラウザのキャッシュをクリアします。あなたが好きなものを必要とする
:
(?:www\.)?
一部は、単にサブドメインのオプション
www
サブドメインをキャッチ
RewriteCond %{HTTP_HOST} ^(?:www\.)?(test)\.example\.com [NC]
RewriteRule (.*) http://www.example.com/%1/$1 [R,L]
!このサブドメインの作成方法によっては、test.example.com
とwww.test.example.com
の両方にアクセスする可能性があります。
%1
はCondPattern
(すなわち。test
)でキャプチャグループへの後方参照である(私はあなたのSSL証明書を疑うが、おそらく?とにかくこれを許可していません)と$1
は捕獲RewriteRule
パターンに後方参照です。サブドメイン(例: "test")を取得するだけで繰り返しは避けられますが、複数のサブドメインを同じルールで処理することもできます。
これは一時的な(302)リダイレクトでもあります。それが動作していると確信している場合にのみ、これを301に変更します(意図している場合)。 301はデフォルトでキャッシュされるため、テストに問題が生じる可能性があります。
テストする前にブラウザのキャッシュをクリアしてください。
# Rewrite for no www cases
RewriteCond %{HTTP_HOST} !www\.example\.com [NC]
#redirect for test subdomain
RewriteCond %{HTTP_HOST} !^test\.example\.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
このブロックの途中にコメントが(それが「テストサブドメインのリダイレクト」しません)誤解を招くように思われます。ブロック全体は、サブドメインtest
を除いてwwwにリダイレクトされます。他のコードはサブドメインをリダイレクトします。
UPDATE:
私はそれがアドレスバー
はい、これが可能であるにtest.example.com示し続けるだろう期待していました。 test.example.com
とwww.example.com
が同じファイルシステムを指している場合は、を実際にホストを変更せずに書き換えることができます。この例では、test.example.com
とwww.example.com
が同じドキュメントルートを指しているとします。 test.example.com
とwww.example.com
ので、(これはユーザーから隠されているが)要求は今test.example.com
にとどまり、test.example.com/test
からコンテンツを提供します
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{HTTP_HOST} ^(?:www\.)?(test)\.example\.com [NC]
RewriteRule (.*) /%1/$1 [L]
されています
変更は、上記のは、以下の書き換えにをリダイレクト本当に同じこと。
チェックはREDIRECT_STATUS
に対して、私たちは書き換えられたリクエストではなく、初期リクエストのみを処理しているので、書き換えループを回避します。最初の要求でREDIRECT_STATUS
が空であり、初めて成功した後に200
に設定されます。
しかし、test.example.com
がどこかで全く異なっている場合は、リバースプロキシを実装し、www.example.com
へのリクエストを「プロキシ」する必要があります。
優秀!ありがとうございました。私はこれを試してみる。コードがサブドメインにリダイレクトされていない可能性がありますが、ウェブホストからサブドメインを作成すると、.htaccess以外のリダイレクトが処理されているように思えました。私がそれをやったときに、少なくともそれはどのように働いたのか。 –
これはうまくいったようです。私はそれがアドレスバーにtest.example.comを表示し続けることを望んでいました - それは今私をwww.example.com/testに誘導するだけですが、それは大きな問題ではありません。できます!ありがとうございました。 –
はい、アドレスバーに 'test.example.com'を表示することはできます。サブドメインがメインドメインと同じファイルシステム領域を指している場合、_external redirect_の代わりに_internal rewrite_を実装することができます。私は私の答えを更新しました。 – MrWhite