クライアントはwww.domain.com/dirにアプリケーションを持っていました。これで、dir.domain.comにサブドメインが設定されました。サブドメインは、www.domain.com/dirに保存されているファイルを参照します。彼らは今、www.domain.com/dirにアクセスしている人々がdir.domain.comにリダイレクトされることを望んでいます。
Www.domain.com/dirに配置するには.htaccessが必要だと思います。wwwを介してアクセスする場合は、構文がわからないので、サブドメインにリダイレクトしてください。
.htacess
に属するディレクトリにwww.domain.com/dir
を追加します。
RewriteEngine on
RewriteCond ${HTTP_Host} ^www\.domain\.com$
RewriteRule ^(.*) http://dir.domain.com/$1 [R,L]
1行目はmod_rewrite
を有効にし、2行目は現在のリクエストがホスト名www.domain.com
を使用してリソースにアクセスしていることを確認し、3行目はそのようなすべてのリクエストを目的のターゲットホスト名にリダイレクトします。
単純にどうですか:
Redirect /dir http://dir.domain.com
/ dirディレクトリの.htaccessファイルでこのルールを試してください。
RewriteCond %{HTTP_Host} !=dir.example.com
RewriteRule .* http://dir.example.com/$0 [L,R=301]
または、ルートディレクトリの次のルール:
RewriteCond %{HTTP_Host} !=dir.example.com
RewriteRule ^dir(/(.*))?$ http://dir.example.com/$2 [L,R=301]
djhowellはもうすぐそこにいました:
RewriteEngine on
RewriteCond %{HTTP_Host} ^(www\.)?domain\.com$
RewriteRule ^/dir(/.*)?$ http://dir.domain.com$1 [R=301,L]
RewriteRule
の先頭にスラッシュが必要です。そうしないと、何も一致しません。 (/.*)?$
ビットは、0または1のスラッシュ、次にすべてのチャンクに一致し、URIの終わりに一致することを意味します。 (これは重要です。これがないと、www.domain.com/dirsomethingelse
にも一致します)。
www.domain.com/dir -> dir.domain.com
www.domain.com/dir/ -> dir.domain.com/
www.domain.com/dir/blah.html -> dir.domain.com/blah.html