同じ 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
いません。404
bar
そこで、その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]