我有一个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]
但是当我导航到该页面时,它不会重定向。有什么想法吗?
答案 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]
您必须通过3个RewriteCond语句分别比较查询字符串,协议和可选的域名。
我已从目标网址中删除/$1
- 这没有任何意义。这条规则应该做的就是重定向到这个的安全版本,只有这一个特定的URL。
我不确定这行是否真的需要:RewriteCond %{HTTP_HOST} =www.mydomain.com
。没有它它应该可以正常工作。
确保您将此规则放在适当的位置 - 它应该放在之前 WordPress重写规则。
<强>更新强> 替代方法:
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之后放置通配符?谢谢!