2011-11-14 11 views
1

私は周りを見てきました(こことgooglesの両方)、実際に私のために働く答えを見つけることができません。基本的には、2つの物理サーバ(devサーバと運用サーバ)があり、gitリポジトリで1つの.htaccessファイルを使用できるようにしたいと考えています。2つのサーバーと3つのサブドメインを持つmod_rewrite?

通常これは難しくありませんが、私は2つのドメインexample.comlongexample.comを持っています。私は私のDNSホストでexample.com(およびdev.example.com)にlongexample.comdev.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}、何もを使用してみましたがあります。変更は

答えて

1

なるほど、それを考え出したそれは[OR]の台無しそれまでの鎖を有するようだここでどのような作品です:!。 『解決済み』との質問が表示されるように

Options +FollowSymlinks +Indexes 
RewriteEngine on 

RewriteCond %{HTTP_HOST} ^www\.yoshokatana\.com$ [NC,OR] 
RewriteCond %{HTTP_HOST} ^yoshokatana\.com$ [NC] 
RewriteRule ^(.*)$ http://yosho.me/$1 [R=301,L] 

RewriteCond %{HTTP_HOST} ^www\.yosho\.me$ [NC] 
RewriteRule ^(.*)$ http://yosho.me/$1 [R=301,L] 

RewriteCond %{HTTP_HOST} ^dev\.yoshokatana\.com$ [NC] 
RewriteRule ^(.*)$ http://dev.yosho.me/$1 [R,L] 

RewriteRule ^([^\.]+)$ $1.html [NC,L] 
RewriteCond %{THE_REQUEST} ^GET\ ([^\.]+)\.(html|htm) [NC] 
RewriteRule ^([^\.]+)\.(html|htm)$ %1 [R=301,NC,L] 
+0

あなたはあなたの答えを受け入れる必要があります –

+0

clevを読んでくださいYahooからのアドバイスhttp://developer.yahoo.com/performance/rules.htmlここでは「Cookieフリーのドメインをコンポーネントに使用する」に進んでください。なぜなら、「www " –

関連する問題