web-dev-qa-db-ja.com

書き換えルールが1つのサブドメインのみで実行されるのを防ぐにはどうすればよいですか?

ルートレベルの.htaccessに、HTTP要求をHTTPSとして書き換える条件を追加しました。

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI}

これは、メインドメインとすべてのサブドメインに適用されます。残念ながら、HTTPSで動作するためにサブドメインの1つで行う作業がまだあるため、thatone'sに何かを挿入したいと思います。継承された書き換えルールをundohtaccessファイル。

ファイルはまだ親ドメインから他の多くの設定を継承する必要があるため、その1つの書き換えルールのみを元に戻す必要があります。

特定のサブドメインに対してこの書き換えルールを無効にするにはどうすればよいですか?

1
Itai

サブドメインがメインドメインのドキュメントルートのサブディレクトリを指している場合は、そのサブディレクトリのRewriteEngine Onファイルに.htaccessディレクティブを単純に含めることができます。ただし、これは親.htaccessファイル内のmod_rewriteディレクティブをallオーバーライドします。これは望ましくない場合があります(ただし、「親ドメインからの他の構成」継承される)。

実行する親.htaccessに他のmod_rewriteディレクティブがある場合は、サブドメインを明確に除外する親.htaccessファイルのこのHTTP to HTTPSルールに条件を追加する必要があります。

例えば:

RewriteEngine On
RewriteCond %{HTTP_Host} !^subdomain\.
RewriteCond %{HTTPS} !on
RewriteRule ^ https://%{HTTP_Host}%{REQUEST_URI} [R=302,L]

Hostnotstart subdomain.であり、nothttpsである場合その後...

通常、リダイレクトにはLフラグが必要なので、処理はファイル全体で続行されません(さらにmod_rewriteディレクティブがある場合)。また、このショップは通常301(永続)リダイレクトです。この場合は、302301に変更して、正常に機能していることが確認できたらそれを変更します。これは開発中の302のままにしておくのがベストかもしれませんが。

また、これがRewriteRulesubstitution(またはRewriteCondディレクティブ)で使用されていない場合、URLパス(つまり、(.*))をキャプチャする必要はありません。

1
MrWhite