我正在使用WordPress。我需要强制所有页面都使用HTTPS,期望一个具有iframe的特定页面具有无法替换的不安全内容。
我在.htaccess文件中尝试了很多不同的配置。他们中的一些人比其他人工作得更好,但他们都没有完全奏效。
我遇到的问题是网站上的导航菜单使用相对链接。我找到了一些允许我在iframe页面强制使用HTTP的选项,但是点击该页面(iframe外部)的任何导航链接都不会重定向回这些页面的HTTPS版本。
以下是我遇到的一个不太有效的例子。
<IfModule mod_rewrite.c>
RewriteEngine On
# Go to https if not on /iframe/
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} !^/iframe/$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
# Go to http if you are on /iframe/
RewriteCond %{SERVER_PORT} !80
RewriteCond %{REQUEST_URI} ^/iframe/$ [NC]
RewriteRule ^(.*)$ https//www.example.com/$1 [R=301,L]
</IfModule>
答案 0 :(得分:0)
您可以在.htaccess
文件中使用以下规则来实现此目的。这样做首先检查HTTP是否未打开,如果没有,则它会将所有内容转发到HTTP,但目录/iframe/
除外。第二个规则检查HTTP是否打开,如果是,则它会将/frame/
重定向回HTTP。
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-SSL} !on
RewriteCond %{REQUEST_URI} !^\/(iframe)
RewriteRule (.*) https://%{HTTP_HOST}/$1 [L,R=301]
RewriteCond %{HTTP:X-Forwarded-SSL} =on
RewriteCond %{REQUEST_URI} ^\/(iframe)
RewriteRule (.*) http://%{HTTP_HOST}/$1 [L,R=301]
确保在>>测试之前清除缓存。
修改强>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{THE_REQUEST} !/iframe/ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTPS} on
RewriteCond %{THE_REQUEST} ^/iframe/ [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]