这些重写规则有什么问题?重定向到一个页面的https,返回到所有其他页面的http

时间:2016-05-02 15:16:00

标签: wordpress apache .htaccess mod-rewrite

期望的行为:

访问http://www.example.com/our-services/individual-medical-dental-insurance重定向到https:https://www.example.com/our-services/individual-medical-dental-insurance

通过https访问任何其他网页,例如https://www.example.com/about-group-benefit-services/,重定向到非https:http://www.example.com/about-group-benefit-services/

我尝试了各种解决方案,这是我最新的版本(不起作用):

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} our-services/individual-medical-dental-insurance
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^our-services\/individual\-medical\-dental\-insurance
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}/$1 
[L,R=301]   
</IfModule>

值得注意的是,这是在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>

# END WordPress

(。htaccess不包含除上述内容之外的任何内容)。

1 个答案:

答案 0 :(得分:1)

不确定这是否会使其有效,但您的规则存在一些问题,并且不符合评论:

.outer_code{ width: 520px; margin: 0 0 30px 200px; white-space: pre-wrap; /* css-3 */ white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ white-space: -pre-wrap; /* Opera 4-6 */ white-space: -o-pre-wrap; /* Opera 7 */ word-wrap: break-word; } 始终以&#34; /&#34;因此,你的正则表达式将永远是真的(因为它永远不会以&#34;我们的服务&#34;开始)。

另一件事是,由于%{REQUEST_URI}反向引用,您的规则最后会在URL处追加,因此您需要将其删除。

最后,两个重定向都将转到$1

另外,你不需要逃避斜线或破折号:

https://