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>

# 结束 WordPress

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 回答