期望的行为:
访问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不包含除上述内容之外的任何内容)。
答案 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://