LaunchRock ページをセットアップしているベータ モードのサイトがあります。mydomain.com が起動ページ (signup.mydomain.com) を指すように設定する必要がありますが、mydomain.com は引き続き表示されます。ただし、現在のディレクトリからサイトを移動することなく、mydomain.com/beta にアクセスしてベータ サイトにアクセスできる必要があります。Apache .htaccess Redirect 経由でこれを達成する方法はありますか?
2 に答える
mod_rewrite
.htaccess
次のファイルをドキュメントルートに配置する場合(または、apache構成ファイル、またはconf.d
インストールに書き込みアクセス権がある場合はディレクトリに配置する方がよい) 、ここで友達になりたいと考えています。
RewriteEngine On
RewriteCond %{PATH_INFO} !^/beta
RewriteRule (.*) http://signup.mydomain.com/$1 [P]
それはどのように機能するはずですか?
最初の行は書き換えをアクティブにします(すでにオンになっている場合は必要ない場合があります)。
次の行は条件を定義します。URLのパスがで始まる場合は/beta
、次の行にルールを適用しないでください。(^/beta
は正規表現であり、その!
前にあるのは、一致しない場合に適用することを意味します。)
最後の行は、最初に、入ってくる「すべて」に一致し、入ってくるものをhttp://signup.mydomain.com/
追加して送信するように言います。[P]
「プロキシ」するように言うと、apache自体がURLを要求し、取得した応答をブラウザに送信します。 、したがって、ブラウザのURLは変更されません。
警告:これは、apache自体がに接続できる場合にのみ機能しhttp://signup.mydomain.com/
ます。これは、特にこのドメインが同じサーバー上にある場合は、機能しないことがあります。
詳細については、RTFM:http: //httpd.apache.org/docs/2.4/rewrite/
プロキシに関するクレメンスの回答を見るまで、実際にリダイレクトせずに最初の要件を自分で機能させることができなかったので、ここに組み込みました。
RewriteEngine On
#Redirect to signup.mydomain.com if not requesting /beta
RewriteCond %{REQUEST_URI} !^/beta(/|$)
RewriteCond %{QUERY_STRING} !beta=true
RewriteRule (.*) http://signup.mydomain.com/$1 [P]
#Strip /beta and append beta=true query string
RewriteCond %{REQUEST_URI} ^/beta
RewriteRule beta(.*) $1?beta=true [QSA]
これは基本的にクエリから /beta を取り除き、クエリ文字列が何であれ beta=true クエリを追加します。次に、この新しいクエリ文字列を 2 回目にチェックします。
プログラムのどこかで beta=true を使用している場合は、これを別のものに変更してください。