将除一个页面外的所有Wordpress页面重定向到SSL

将除一个页面外的所有Wordpress页面重定向到SSL,wordpress,.htaccess,mod-rewrite,ssl,Wordpress,.htaccess,Mod Rewrite,Ssl,我想将Wordpress网站上的所有页面重定向到SSL,除了一个页面 我尝试了许多方法来实现这一点,并成功地使SSL工作,但我无法使单页排除工作 我认为问题在于Wordpress特定的重写 # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{SERVER_PORT} !^443$ RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R

我想将Wordpress网站上的所有页面重定向到SSL,除了一个页面

我尝试了许多方法来实现这一点,并成功地使SSL工作,但我无法使单页排除工作

我认为问题在于Wordpress特定的重写

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

RewriteCond %{REQUEST_URI} ^parent-page/child-page/
RewriteCond %{HTTPS} on   
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</IfModule>
# END WordPress
#开始WordPress
重新启动发动机
重写cond%{SERVER\u PORT}^443$
重写规则(.*)https://%{HTTP_HOST}%{REQUEST_URI}[R,L]
重写基/
重写规则^index\.php$-[L]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/index.php[L]
重写cond%{REQUEST_URI}^父页/子页/
在上重写cond%{HTTPS}
重写规则(.*)http://%{http_HOST}%{REQUEST_URI}[R,L]
#结束WordPress

有什么建议吗?

您总是需要将重定向的规则置于内部重写的规则之前。否则,内部内容(如
/index.php
)最终会被重定向

尝试:

#开始WordPress
重新启动发动机
重写cond%{SERVER\u PORT}^443$
重写cond%{REQUEST_URI}^/父页/子页/
重写规则(.*)https://%{HTTP_HOST}%{REQUEST_URI}[R,L]
重写cond%{REQUEST_URI}^/父页/子页/
在上重写cond%{HTTPS}
重写规则(.*)http://%{http_HOST}%{REQUEST_URI}[R,L]
重写基/
重写规则^index\.php$-[L]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/index.php[L]
#结束WordPress

请注意,您还需要在
%{REQUEST\u URI}
条件中添加一个
/
前导斜杠,这些条件将始终以
/
开头。此外,您不需要使用该URI重定向到https,因此您需要在重定向到https的过程中添加一个否定的排除条件。

您希望不重定向到
/父页面/子页面/
。我在Wordpress声明之后添加了它,因为我认为它不起作用,因为永久链接还没有生成。还是没用,谢谢你。似乎更接近我的目标,但有问题的页面现在只是重定向到主页。还有什么建议吗?@Robert规则中没有重定向到主页的内容,可能是其他原因造成的。我只是从文件中删除了所有其他内容,但仍然有相同的问题。在Wordpress中,我应该将站点URL设置为包含HTTPS吗?@Robert如果您在Wordpress中设置重定向,它将不支持,甚至与您在htaccess中设置的重定向不兼容。wordpress和htaccess文件中的规则都不知道对方。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} !^/parent-page/child-page/
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

RewriteCond %{REQUEST_URI} ^/parent-page/child-page/
RewriteCond %{HTTPS} on   
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R,L]

RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]


</IfModule>
# END WordPress