2011-06-21 5 views
2

私は同様のスタック質問にすべての回答を試みましたが、何も機能していません。 example.com/blogs/*とexample.com/page-name以外のすべてをhttps://wwwにリダイレクトする必要があります。ApacheはすべてのURLをhttpsに書き換えます.www +いくつかの例外を除きます。

私は現在、この持っている:

RewriteCond %{HTTPS} =off 
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L] 
RewriteCond %{http_host} ^example.com [NC] 
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L] 

https://example.com以外のすべてをリダイレクトする、それはWWWを追加しません。

あなたはありがとうhttps://moblized.com

RewriteEngine On 
RewriteCond %{HTTPS} =off 
RewriteRule ^(.*)$ https://www.moblized.com/$1 [R=301,L] 
RewriteCond %{http_host} ^moblized.com [NC] 
RewriteRule ^(.*)$ https://www.moblized.com/$1 [R=301,L] 

RewriteCond %{SERVER_PORT} 80 
RewriteCond %{REQUEST_URI} blogs 
RewriteRule ^(.*)$ http://moblized.com/blogs/$1 [R,L] 

# Rewrite URLs of the form 'x' to the form 'index.php?q=x'. 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !=/favicon.ico 
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 
</IfModule> 

# $Id: .htaccess,v 1.90.2.4 2009/12/07 12:00:40 goba Exp $ 

AddHandler php5-script .php 

で自分で見ることができます!

答えて

10

私はあなたを正しく理解してくれることを願っています。あなたが欲しい:

  • がHTTPSにexample.comから
  • リダイレクトwww.example.com(除く/ブログ/と/ページ名)へのすべてのページをリダイレクトする(/ブログ/と/ページ名を除く)
  • に基づいて、 /page-nameの下で現在の.htaccessあなたはここで/favicon.ico

を意味は、上記の要件のためのルールです - あなたの.htaccessにそれらを置く:

# activate rewrite engine 
RewriteEngine On 

# don't touch favicon.ico (always accept as is regardless of the domain or protocol) 
RewriteRule ^favicon.ico$ - [L] 
# don't touch /index.php (usually means already overwritten URL) 
# otherwise we may enter into a loop 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule ^index\.php$ - [L] 

# ensure trailing slash is present for /blogs -> /blogs/ 
RewriteRule ^blogs$ http://mobilized.com/blogs/ [R=301,QSA,L] 
# /blogs/ should only be accessible via http://example.com/blogs/ 
RewriteCond %{HTTP_HOST} !^moblized\.com$ [NC] 
RewriteRule ^blogs/(.*)$ http://mobilized.com/blogs/$1 [R=301,QSA,L] 
RewriteCond %{HTTP_HOST} ^moblized\.com$ [NC] 
RewriteCond %{HTTPS} =on 
RewriteRule ^blogs/(.*)$ http://mobilized.com/blogs/$1 [R=301,QSA,L] 
RewriteRule ^blogs/.* - [L] 

# redirect to www.example.com if necessary 
RewriteCond %{HTTP_HOST} ^moblized\.com$ [NC] 
RewriteCond %{REQUEST_URI} !=/client-ipad-contest 
RewriteRule ^(.*)$ https://www.moblized.com/$1 [R=301,QSA,L] 

# redirect to HTTPS if not there already 
RewriteCond %{HTTPS} !=on 
RewriteCond %{REQUEST_URI} !=/client-ipad-contest 
RewriteRule ^(.*)$ https://www.moblized.com/$1 [R=301,QSA,L] 

# Rewrite URLs of the form 'x' to the form 'index.php?q=x'. 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php?q=$1 [L,QSA] 

お客様の顧客がhttps://example.comに行くと、ブラウザに「信頼できない証明書」という警告が表示される可能性が最も高いです。これは、要求がApacheの書き換えモジュールによる処理を開始する前に、HTTPSセッションを最初に完全に確立する必要があるためです。

それが問題である場合 - その後、(GoDaddyのは確かにこれを行い)example.comwww.example.comの両方をカバーするか、すべてのサブドメインをカバーするワイルドカード証明書を取得する別のSSL証明書(または他のベンダーからの)購入を検討 - *.example.com(しかし、これはずっと高価になるでしょう)。


UPDATE:ローカル要件をシミュレートした後(申し訳ありませんが、私は、Apacheの作業とはSSLを持っていないので、私は、ルール/ドメイン名の異なる種類の)私のテストで(それに取って代わった)私が改訂されているとルールを更新しました。

これらのルールはローカルでテストされています(すべてのページは非常にシンプルで、1画像& cssと少しのテキストを含むだけです)。何かがうまくいかない場合は教えてください。

+0

ああ、信頼できない矩形は以前にはうまくいかなかった理由の一部でした。これは完璧に働きました、ありがとうございました。 LazyOneはうまくフィットしません。 – jetlej

+0

これをさらにテストすると、多くの問題が発生します。スタイルシートはブログページにロードされず、メインページはSSL – jetlej

+0

@ Jordanメインページにリダイレクトされません。あなたは何をしないのかの** ** ** ** URLを教えてください。私の間違いでは、私の間違いは '/ blog /'を '/ blogs /'に変更してください( 's'を入力するのを忘れました) – LazyOne

関連する問題