将特定的WordPress页面重定向到HTTPS

时间:2011-07-16 23:07:15

标签: wordpress .htaccess mod-rewrite redirect https

我有一个WordPress网站,并希望将特定网页重定向到HTTPS。具体来说,我希望将http://www.mydomain.com/?page_id=4重定向到https://www.mydomain.com/?page_id=4。我采取的方法是将以下内容添加到.htaccess:

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^http://www.mydomain.com/?page_id=4 [NC]
RewriteRule ^(.*)$ https://www.mydomain.com/?page_id=4/$1 [R=301,L]

但是当我导航到该页面时,它不会重定向。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

嗯...... %{HTTP_HOST}变量将仅解析为域名,在您的示例中,它只是www.mydomain.com。你还需要更多:

Options +FollowSymLinks -MultiViews
RewriteEngine on
# force secure version of this page
RewriteCond %{QUERY_STRING} ^page_id=(\d+) [NC]
RewriteCond %{HTTPS} =off
RewriteCond %{HTTP_HOST} =www.mydomain.com
RewriteRule ^(.*)$ https://www.mydomain.com/$1?page_id=%1 [R=301,L]
  1. 您必须通过3个RewriteCond语句分别比较查询字符串,协议和可选的域名。

  2. 我已从目标网址中删除/$1 - 这没有任何意义。这条规则应该做的就是重定向到这个的安全版本,只有这一个特定的URL。

  3. 我不确定这行是否真的需要:RewriteCond %{HTTP_HOST} =www.mydomain.com。没有它它应该可以正常工作。

  4. 确保您将此规则放在适当的位置 - 它应该放在之前 WordPress重写规则。


  5. <强>更新 替代方法:

    Options +FollowSymLinks -MultiViews
    RewriteEngine on
    # force secure version of this page
    RewriteCond %{QUERY_STRING} ^page_id=(\d+)(.*) [NC]
    RewriteCond %{HTTPS} =off
    RewriteCond %{HTTP_HOST} =www.mydomain.com
    RewriteRule ^(.*)$ https://www.mydomain.com/$1 [QSA,R=301,L]
    

答案 1 :(得分:0)

感谢所有帮助。我想出了一个解决方法。我基本上硬编码每个页面的块#:

Options +FollowSymLinks -MultiViews
RewriteEngine on
#force secure version of page=4
RewriteCond %{QUERY_STRING} =page_id=4 [NC]
RewriteCond %{HTTPS} =off
RewriteCond %{HTTP_HOST} =www.mydomain.com
RewriteRule ^(.*)$ https://www.mydomain.com/?page_id=4 [R=301,L]

#force secure version of page=5
RewriteCond %{QUERY_STRING} =page_id=5 [NC]
RewriteCond %{HTTPS} =off
RewriteCond %{HTTP_HOST} =www.mydomain.com
RewriteRule ^(.*)$ https://www.mydomain.com/?page_id=5 [R=301,L]

#force secure version of page=6
...

不优雅,但有效。

最后一期。 URL可能包含page_id之后的字符。例如:www.mydomain.com/?page_id = 4&amp ;category = 1。有没有人知道如何在page_id = 4之后放置通配符?谢谢!