0

htaccess を使用して、特定のページへのすべてのリクエストを https に、その他すべてを http:// に自動的に送信しようとしています。

以下は、sslを強制的に動作させるコードを持っているコードです

RewriteEngine on
RewriteBase /

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^va-homebuyers-guide https://domain.com/va-homebuyers-guide/ [R=301,L]

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^va-purchase-request https://domain.com/va-purchase-request/ [R=301,L]

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^va-streamline-refinance https://domain.com/va-streamline-refinance/ [R=301,L]

これは期待どおりに機能しており、これらのページの SSL バージョンにリダイレクトされます。次に、以下を追加して、他のすべてを http にリダイレクトしようとしました。

RewriteCond %{SERVER_PORT} !^80
RewriteCond %{REQUEST_URI} !^va-homebuyers-guide$
RewriteCond %{REQUEST_URI} !^va-purchase-request$
RewriteCond %{REQUEST_URI} !^va-streamline-refinance$
RewriteRule ^(.*)$ http://domain.com/$1 [R,L]

このコードは、/va-purchase-request /va-homebuyers-guide および /va-streamline-refinance に移動するときにリダイレクト ループを引き起こし、他のページをまったくリダイレ​​クトしません。

私はこれに完全に行き詰まっており、どんな助けも大歓迎です!

編集:

wordpress によって追加された .htaccess ファイルにもこのコードがあります...他のリダイレクトに干渉している可能性はありますか?

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# ワードプレス終了

4

1 に答える 1

1

.htaccess コードを次のように置き換えます。

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{HTTPS} off
RewriteRule ^va-(homebuyers-guide|purchase-request|streamline-refinance)(/.*|)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NC]

RewriteCond %{HTTPS} on
RewriteRule (?!^va-(homebuyers-guide|purchase-request|streamline-refinance)(/.*|)$)^.*$ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NC]
于 2012-05-08T20:50:17.577 に答える