同じ 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]