私は周りを見てきました(こことgooglesの両方)、実際に私のために働く答えを見つけることができません。基本的には、2つの物理サーバ(devサーバと運用サーバ)があり、gitリポジトリで1つの.htaccessファイルを使用できるようにしたいと考えています。2つのサーバーと3つのサブドメインを持つmod_rewrite?
通常これは難しくありませんが、私は2つのドメインexample.com
とlongexample.com
を持っています。私は私のDNSホストでexample.com
(およびdev.example.com
)にlongexample.com
とdev.longexample.com
年代ののCNAMEを設定し、両方のサーバー上のApacheサーバー名/にServerAliasを設定します。
Options +FollowSymlinks +Indexes
RewriteEngine on
# RewriteCond %{HTTP_HOST} ^www.longexample.com$ [NC,OR]
# RewriteCond %{HTTP_HOST} ^longexample.com$ [NC,OR]
# RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
# RewriteRule ^(.*)$ http://example.com/$1 [R,N]
RewriteCond %{HTTP_HOST} ^dev\.longexample\.com$ [NC]
RewriteRule ^(.*)$ http://dev.example.com/$1 [R,L]
RewriteRule ^([^\.]+)$ $1.html [NC,L]
RewriteCond %{THE_REQUEST} ^GET\ ([^\.]+)\.(html|htm) [NC]
RewriteRule ^([^\.]+)\.(html|htm)$ %1 [R,NC,L]
:
dev server:
ServerName dev.example.com
ServerAlias dev.longexample.com
prod server:
ServerName example.com
ServerAlias longexample.com
ServerAlias www.example.com
ServerAlias www.longexample.com
ここに私の.htaccessファイルがあります
おそらく、最初の2つのブロックは、prodとdevを正しいURLに書き換えるべきです(私はすべてが動作するときに301を作っていきます)が、動作していないようです。今のように、それは何もしません。 [L]
ではなくRewriteRuleを[N]
に設定すると、無限ループが発生します。
最初のブロックは、私がdevサーバー上で動作させると、prodの解決策がすぐに明らかになるはずですから、コメントアウトされています。最後のブロックはまだ/about.html
ファイルを使用している間example.com/about.html
への要求は(example.com/about
にリダイレクトする。その部分は正常に動作します。
二つのドメインを使用して、いくつかの問題?私も%{SERVER_NAME}
代わりの%{HTTP_HOST}
、何もを使用してみましたがあります。変更は
あなたはあなたの答えを受け入れる必要があります –
clevを読んでくださいYahooからのアドバイスhttp://developer.yahoo.com/performance/rules.htmlここでは「Cookieフリーのドメインをコンポーネントに使用する」に進んでください。なぜなら、「www " –