2017-03-22 11 views
0

ドメインはすべてのページが.htaccessのhttpsに設定されています。 アイルランド版のサイトには第2ドメインがあり、証明書がないため、httpに設定する必要があります。 また、両方のドメインがwwwに設定されていることを確認します。 問題をさらに複雑にするために、ユーザーはサイトの一部にログインすることができ、そのページを安全にしたいと考えています。私たちが計画しているのは、アイルランドのドメインとログインページを検出し、メインドメインにリダイレクトすることです。1つのドメインをhttpsの第2ドメインにリダイレクトするhttp

私はこの.htaccessで個々の部分をコーディングすることができますが、それはひどく複雑で、面倒で、デバッグが難しくなく、シナリオ全体をどのようにコードするのかよくわかりません。私はまた、ページを不必要にリダイレクトしたくない。

ので、要約で:

(www.)example.com -> https://www.example.com 
(www.)example.ie -> http://www.example.ie 
(www.)example.ie/login.php -> https://www.example.com/login.php 

私は任意の助けのために感謝される、任意の同様のシナリオを見つけることができませんでした。ありがとう。

答えて

1

これを行う方法は複数あります。アビのソリューションを反映して

# Special case for Irish login page 
RewriteCond %{HTTP_HOST} ^(?:www\.)?example\.ie$ 
RewriteRule ^/login\.php$ https://www.example.com/login.php [R] 

# By default use HTTPS 
RewriteRule .* - [E=CORRECT_REQUEST_SCHEME:https] 
# For (www.)example.ie use HTTP 
RewriteCond %{HTTP_HOST} ^(?:www\.)?example\.ie$ 
RewriteRule .* - [E=CORRECT_REQUEST_SCHEME:http] 

# Ensure www prefix 
RewriteCond %{HTTP_HOST} ^example\.(com|ie)$ 
RewriteRule ^(/.*)$ %{ENV:CORRECT_REQUEST_SCHEME}://www.example.%1/$1 [R] 

# Ensure correct request scheme 
RewriteCond %{HTTPS} =off 
RewriteCond %{ENV:CORRECT_REQUEST_SCHEME} =https 
RewriteRule ^(/.*)$ https://%{HTTP_HOST}/$1 [R] 
+0

、おかげで非常に多くのAvi:残念ながら、私たちは「REQUEST_SCHEME」を使用することはできません当社の生産のWebサーバー上でApache 2.2.29の下で実行されています。私は今これをテストしますが、それをコード化しようとしていたよりもはるかに複雑ではありません。 –

+0

ああ!すべてうまく見えますが、Apache 2.2.29を使用しているため、REQUEST_SCHEMEは使用できません。バリデータを実行していると、RewriteCond%{REQUEST_SCHEME} -ne%{ENV:CORRECT_REQUEST_SCHEME}が失敗しているようです。 –

+0

2.2.29(https://archive.apache.org/dist/httpd/)のmod_rewriteソースを見ると、REQUEST_SCHEME変数はありません。私はそれを考慮に入れて更新するつもりです。 – Avi

0

編集コード:あなたは(ユニークなIPベースの仮想ホストを使用して、たとえば、VS)ホストヘッダーに基づいて差別していると仮定すると、あなたのような何かを行うことができます。なんらかの理由でまだwwwを強制していないし、.comサイトにhttpsを強制していない。

完璧に見える程度
RewriteEngine on 
RewriteBase/
Options +FollowSymLinks 

## ERROR DOCUMENT PROCESSING ## 
ErrorDocument 403 /404.php 
ErrorDocument 404 /404.php 
ErrorDocument 410 /410.php 
## ERROR DOCUMENT PROCESSING ## 

## TRAP REQUESTS FOR IMAGE DOES NOT EXIST ## 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} \.(gif|jpg|jpeg|png)$ 
RewriteRule .* /products/sq/250sq/no_image_available.jpg [R] 

## FORCE URL CHANGES FOR DOMAINS ## 

# Special case for Irish login page 
RewriteCond %{HTTP_HOST} ^(?:www\.)?example\.ie$ 
RewriteRule ^/login\.php$ https://www.example.com/login.php [R] 

# By default use HTTPS 
RewriteRule .* - [E=CORRECT_REQUEST_SCHEME:https] 
# For (www.)example.ie use HTTP 
RewriteCond %{HTTP_HOST} ^(?:www\.)?example\.ie$ 
RewriteRule .* - [E=CORRECT_REQUEST_SCHEME:http] 

# Ensure www prefix 
RewriteCond %{HTTP_HOST} ^example\.(com|ie)$ 
RewriteRule ^(/.*)$ %{ENV:CORRECT_REQUEST_SCHEME}://www.example.%1/$1 [R] 

# Ensure correct request scheme 
RewriteCond %{HTTPS} =off 
RewriteCond %{ENV:CORRECT_REQUEST_SCHEME} =https 
RewriteRule ^(/.*)$ https://%{HTTP_HOST}/$1 [R] 
関連する問題