2017-04-12 12 views
0

サイトごとにhtaccessが必要ですが、私は4つのサイトに対して1つずつ、英国は2つ、AUは2つです。これはCodeigniterビルドの1つです。 2つのサイトはステージングのためにdev.mydomain.extensionにあり、2つのサイトはライブステージになっています。私が何をしたいかhtaccessがリダイレクトする回数が多すぎるcodeigniter - SSL以外のサブドメイン以外のSSL

  1. http://mydomain.co.uk
  2. https://WWW.mydomain.co.uk には全くありません 変更 http://dev.mydomain.co.ukを行い https://WWW.mydomain.co.uk
  3. には何も http://WWW.mydomain.co.ukリダイレクト何かをリダイレクトします。

私は以下のことを試していますが、私はいつも「リダイレクトが多すぎます」というエラーが出て、私はそれをまったく処理しないと思います。私は少し深みがある。

RewriteEngine on 
RewriteBase/
##setting 2 exceptions 
RewriteCond %{HTTP_HOST} !=dev.mydomain.co.uk 
RewriteCond %{HTTP_HOST} !=dev.mydomain.com.au 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 
##Codeigniter rules 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [L] 

答えて

1

は、このようにそれを持っている:

RewriteEngine on 
RewriteBase/

RewriteCond %{HTTP_HOST} !^www\. [NC,OR] 
RewriteCond %{ENV:HTTPS} !on 
RewriteCond %{HTTP_HOST} ^(?!dev\.)(?:www\.)?(.+)$ [NC] 
RewriteRule^https://www.%1%{REQUEST_URI} [R=301,L,NE] 

##Codeigniter rules 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [L] 

は、この変更をテストする前にブラウザのキャッシュをクリアすることを忘れないでください。

+0

シークレットで見ると、私は自分のコードで「あなたが何回もリダイレクトされました」ということになります。私も同様に含まれているルールを逃した: '古いサイトから何かindex.aspをキャッチ RewriteRule ^(。*)\ index.asp $/$ 1 [R = 301、L]' 違い。これはコード識別規則の直前です。 – tobzzz

+0

いいえ私は既にこのルールを私のApacheサーバーでテストしましたが、 'http:// 'にリダイレクトされる他のルールやコードがない限り、このルールにはリダイレクトループはありません。 btwシークレットは古いキャッシュがなくなったことを意味しません。ブラウザのキャッシュを完全にクリアするか、コマンドライン 'curl'を使ってテストしてください。 – anubhava

+0

最初の6行(スペースを使って7行)まで減らしました。プロキシサーバーでチェックされたキャッシュをクリアしましたが、リダイレクトが多すぎます。しかし、URLバーではhttps:と言っています。それが何かを意味するのかどうかは分かりません。それがそこに到着した後、その後のリダイレクトがあります。 – tobzzz

関連する問題