web-dev-qa-db-ja.com

マルチサイトインストールでの単一ドメインの.htaccess https書き換え

2つのサイトが別々のドメインで実行されているマルチサイトインストールがあります。これらのサイトの1つはhttps://を通過する必要があり、もう1つはhttp://に固執する必要があります。また、wwwを含むようにすべてのトラフィックを書き換える必要があります。接頭辞。

そう:

example.comに書き直されますhttps://www.example.com

example.co.ukhttp://www.example.co.ukに書き換えられました

これを処理するように.htaccessファイルを設定しようとしています。 here で説明されている構文で試しました。

RewriteEngine on
<If "%{HTTP_Host} == 'example.com'">
RewriteCond %{HTTP_Host} !^www. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_Host}/$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]
</If>
<If "%{HTTP_Host} == 'example.co.uk'">
RewriteCond %{HTTP_Host} !^www. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_Host}/$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !http
RewriteRule ^(.*)$ http://%{HTTP_Host}%{REQUEST_URI} [L,R=301]
</If>

言うまでもなく、それは機能していません。どんな入力でも大歓迎です!

3
pepsimxm

最初に、[drupal] /sites/sites.phpファイルを使用して次のようなことを試みます。

$sites['example.co.uk'] = 'example.com';
$sites['example.com'] = 'example.com'; // for demonstration only

次に htaccess module をチェックしてHTTPSを強制します。これらはオプションです:

enter image description here

1
Dan Mantyla

これはテストされていませんが、次のように動作します:

# Force HTTPS for example.com
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_Host} !^(www\.)?example\.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [NC,R=301,L]

# Force HTTP for example.co.uk
RewriteCond %{HTTPS} =on
RewriteCond %{HTTP_Host} !^(www\.)?example\.co\.uk$ [NC]
RewriteRule ^(.*)$ http://www.example.co.uk/$1 [NC,R=301,L]
0
Colin Shipton

私の提案は、リダイレクト以外は何も変更しないことですhttp://example.comからhttps://example.com付き(

RewriteCond %{HTTP_Host} ^(www.)?example.com$
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI}

リダイレクトしたい場合はhttps://example.co.uk to http://example.co.ukadd the following line to your。htaccess`ファイル(ただし、必要ないようです)

RewriteCond %{HTTP_Host} ^(www.)?example.co.uk$
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_Host}%{REQUEST_URI}

また、 Htaccess moduleでそれらを設定することもできます

Htaccessは、設定に基づいてDrupalルートhtaccessファイルを自動生成するモジュールです。

Drupalは、Apache Webサーバーのすべてのhtaccessに適合する1つのサイズを提供しようとしますが、この目標はますます難しくなっています。このモジュールにより、ウェブマスターは特定のオプションを設定できます。

また、このモジュールは、バージョンのアップグレード中に毎回htaccessを手動で変更してDrupalを使用したくないWebマスターを対象としています。

特徴:
-リダイレクトをwwwまたは非wwwに設定します。
-FollowsymlinksまたはSymlinksIfOwnersMatchを使用します。
-HTTPSサポート(すべての要求をHTTPSにリダイレクトするか、両方のプロトコルをサポートします)。
-コアテキストファイル(CHANGELOG.txtなど)が表示されないようにします。
-Boost htaccess設定を挿入する機能
-Drupalルールの前にカスタムルールを追加します。
-各htaccessはプロファイルに添付されます。このように、いくつかを管理できます
-htaccessファイルを作成し、適切なファイルをWebサイトに展開します。
-htaccessが変更されているかどうかを確認し、サイトのステータスを報告します。
-リスト項目-Drush統合。

0
Yusef