web-dev-qa-db-ja.com

.htaccessはURLを変更せずにドメインをサブディレクトリにリダイレクトします

私は次のセットアップを持っています:-> domain1.comは私のメインドメインであり、ドキュメントルートでもあります-> domain2.comはエイリアスドメインとして登録されている別のドメインです(つまり、domain1.comとまったく同じです)それらのドメインの。

そのドメインを何かにリダイレクトしたいときは、通常、これを使用してドメインを他の何か(外部Webサイトなど)にリダイレクトします。

RewriteCond %{HTTP_Host} ^(www\.)?domain2.com$ [NC]
RewriteRule ^(.*) http://somewiredisp.com/user/bla/$1 [L,R]

これは通常、フォーラムなどにニースURLを必要とする人にドメインを登録する場合に使用されます。チャームのように動作します-唯一の「問題」はブラウザのアドレスバーが変わることですが、外部URLでそれを行う方法はなく、それについて誰も文句を言わないことを読んだことがあります[〜#〜] i [〜#〜]それでいい。

ただし、ここで、URLをアドレスバーで変更せずにサブディレクトリにリンクしたいと思います。

domain2.com-> domain1.com/subdir(またはdomain2.com/subdir-エイリアスドメインであるため重要ではありません)。

私の現在のアプローチは

RewriteCond %{HTTP_Host} ^(www\.)?domain2.com$ [NC]
RewriteRule ^(.*) http://domain1.com/subdir/ [P]

動作しません(エラー404)-明らかに動作する場合、domain1.com/subdir /を直接呼び出すと。

私もいくつかのバリエーションを試しました

RewriteRule ^(.*) http://domain2.com/subdir/ [P]
RewriteRule ^(.*) /subdir/ [P]
RewriteRule ^(.*) http://domain1.com/subdir/index.html [P]

すべて同じ結果になります。

多分それは単なる単純な間違いですが、私は現在無知です:/

17
Shark5060

次のルールを使用できます。

RewriteCond %{HTTP_Host} ^(www\.)?domain2\.com$ [NC]
RewriteRule !^subdir/ /subdir%{REQUEST_URI} [L,NC]

これにより、domain2.com with /subdirまだ存在しない場合。

30
anubhava

以下のコードは完璧に機能します。

RewriteEngine on
RewriteCond %{HTTP_Host} ^(www.)?example.com$
RewriteCond %{REQUEST_URI} !^/folder_name/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /folder_name/$1
RewriteCond %{HTTP_Host} ^(www.)?example.com$
RewriteRule ^(/)?$ folder_name/index.html [L]
0
Rohit Parte