2012-05-04 22 views
0

サーバープロバイダが停止しているため、コントロールパネルにサブドメインを作成する可能性があり、htaccessで解決する必要があります。サブドメインへのフォルダ

だから私はこのようなことをしなければならない。ユーザーがhttp://asdf.example.comと入力した場合、http://example.com/asdfの内容を取得する必要があります(プロバイダがFTPの構造を変更したとしても...)。

このチュートリアルはありません。前もって感謝します。

+1

[フォルダにサブドメインをリダイレクト]の可能な複製(http://stackoverflow.com/questions/1456956/redirect-subdomain-to-folder) –

答えて

1

あなたはmod_rewriteのとmod_proxyをしていることを行うことができます。

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^asdf\.example\.com$ 
RewriteRule^http://example.com/asdf%{REQUEST_URI} [L,P] 
1

あなたはモッズプロキシは必要ありません。ただ、内部リダイレクトを実行します。

RewriteEngine on 
RewriteBase /
RewriteCond %{HTTP_HOST} =asdf.example.com 
RewriteCond $0   !^asdf/ 
RewriteRule ^.*   asdf/$0    [L] 

ルールがasdf/をプレフィックス要求を書き換えるが、(1)ホストがhttp:/asdf...あると(2)の書き換えが既に行われていない場合のみ。反復ループを防ぐには、(2)が必要です。 $ 0はルール内の一致文字列です。

これが役に立ちます。

2

より一般的なバージョンのTerryEの答え。私はそれをテストしていない!

RewriteCond %{HTTP_HOST} !www.example.com 
RewriteCond %{HTTP_HOST} (.*).example.com 
RewriteCond %1/$0  !^([^/]+)/\1 
RewriteRule ^.*   %1/$0 [L] 
+0

私はこれが原因で最初のパスでは動作しないと思いますfred.ex ... cond1はcond2の 'fred'として%1を設定しますが、cond2の正規表現は失敗しますので、(!演算子のために)condが成功しても、%1は書き換えに設定されませんルール。 *しかし、*、ルールルールパターン '^([^/| + /)?(。*)']を分割し、$ 1と$ 2を設定してから 'RewriteCond $ 1%1!^(。*?)/ 1 'をチェックし、%2を繰り返して%1をリセットします。それでも良いアイデアだから+1してください。私のギリシャの島の隠れ家に戻る! – TerryE

+0

小さなタイプミスがありました。 '|'は ']'だったはずです。 – Gerben

+0

@テリー私はそれも考えていましたが、私が知っている限り!その条件の逆参照も無効になりますが、%1には引き続きサブドメインが含まれます。上記のコードを自分のサーバーでテストしたところ、問題なく動作しているようです。 – Gerben