我有一个新网站,我正在尝试将其设为https。我在一个页面上嵌入了一个论坛。论坛没有进入https!因此,我需要通过HTTP提供一个页面,而不是HTTPS。我使用标准的htaccess代码强制所有页面转到HTTPS。
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
我读了一下语法,但它非常复杂。我想我想用RewriteCond做一些事情,因为从我读到的内容将会在它下面的规则中创建一个例外。
我的论坛在http://www.xxxx.xxx/forum.html
如何编写规则以对该页面进行例外处理?
答案 0 :(得分:1)
您可以在.htaccess
文件中使用以下规则。这样做首先检查HTTP是否未打开,如果没有,则它会将所有内容转发到HTTP,但目录forum
除外。第二个规则检查HTTP是否打开,如果是,则它会将forum
重定向回HTTP。
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-SSL} !on
RewriteCond %{REQUEST_URI} !^\/(forum)
RewriteRule (.*) https://%{HTTP_HOST}/$1 [L,R=301]
RewriteCond %{HTTP:X-Forwarded-SSL} =on
RewriteCond %{REQUEST_URI} ^\/(forum)
RewriteRule (.*) http://%{HTTP_HOST}/$1 [L,R=301]
确保在测试之前清除缓存。如果您对上述规则有疑问,那么您也可以尝试以下方法:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/forum
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} ^/forum
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]