我希望我的wordpress页面被重定向到https,除了页面/contact。
我的 .htaccess 文件中有这个,但它不起作用:
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteCond %{THE_REQUEST} !contact/
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
谢谢
首先,在使用mod_rewrite
的情况下,RewriteEngine on
应该排在顶部,那么,最好在应用任何规则之前强制所有web进入https,那么问题是当你排除只有包含contact
的请求被强制进入https
时,https
是一个, 例如,当您在站点https://yourdomain.com
转到联系页面时,唯一的更改将在URI中,因此您的代码应如下所示:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteCond %{THE_REQUEST} !contact
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTPS} on
RewriteCond %{THE_REQUEST} contact
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
</IfModule>
上面的代码将防止所有具有contact
单词的请求被强制进入https
因此,如果您想指定更多内容,则可以根据需要使用/contac/
或/contact
。
注意:清除浏览器缓存然后测试它。
如果要添加第二页,请更新,通过此(contact|secondpage)
更改每个contact
,依此类推
尝试将请求 URI 提供给重写条件。
RewriteCond %{REQUEST_URI} !contact/