0

同じ IP を指す 2 つのドメインがfoo.comあり、bar.com

ドメインの仮想ホストをセットアップするアクセス権はありませんが、.htaccessこのようにセットアップされるようにルールを作成できました。

  • foo.com は / ディレクトリを指します
  • bar.com は /bar ディレクトリを指します

上記のセットアップを行うindex.htmlと、ドメインのルートにアクセスするためのさまざまなファイルを作成できます。

これは私が実装したルールですbar.com

RewriteCond %{HTTP_HOST} ^(www\.)?bar\.com$
RewriteCond %{REQUEST_URI} !bar/
RewriteRule ^(.*)$ bar/$1 [L]

上記のルールは完全に機能しますが、ナビゲートしてもディレクトリのルートを指してbar.com/barいません。404bar

そこで、そのRewriteCondような問題を処理するために別のものを作成しました。

RewriteCond %{HTTP_HOST} ^(www\.)?bar\.com$
RewriteCond %{THE_REQUEST} "(GET|POST) \/bar\/ HTTP/"

RewriteCond完璧に動作しますが。ユーザーがアクセスしたときにbar.com/barそれがディレクトリを指し/bar/bar、したがって私に404

以下を試してみましたRewriteRuleが、うまくいかないようです

RewriteRule ^bar/(.*)$ bar/bar/$1  [L,QSA]

bar.comそのため、メインドメインへのリダイレクトを一時的に作成しました。

RewriteRule ^bar/(.*)$ http://bar.com/$1 [L,QSA,R=301]

更新:ありがとう@anubhava

    RewriteCond %{HTTP_HOST} ^(www\.)?bar\.com$
    RewriteCond %{THE_REQUEST} "(GET|POST) \/bar\/(.*) HTTP/"
    RewriteCond %{ENV:REDIRECT_STATUS} !200
    RewriteRule ^(.*)$ /bar/$1 [L]
4

1 に答える 1