首先,这是我目前使用的.htaccess规则:
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://example.com/$1 [R=301,L]
这很棒,并将旧域的每个链接重定向到新域中的相应链接。也就是说,http://olddomain.com/1.html
被重定向到http://example.com/1.html
,依此类推。
但它不会将https://olddomain.com/1.html
重定向到https://example.com/1.html
只是你知道我试过,下面是我也碰巧测试的规则。不幸的是,他们正在创建某种循环,并且重定向不起作用。
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) example.com/$1 [R=301,L]
和
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{SERVER_PORT} ^443$ [OR]
RewriteCond %{HTTPS} =on
RewriteRule (.*) example.com/$1 [R=301,L]
那么,有人可以给我规则将http页面重定向到http和https页面到https吗?感谢。
答案 0 :(得分:0)
您的HTTPS重写错误。 Cond是一个正则表达式,而不是质量测试。它应该是
RewriteCond %{HTTPS} !^on
%{HTTPS}
var只会包含on
或off
。从不=on
,因此匹配失败并触发重定向,即使https确实已启用。
更新
对于无条件HTTP-> HTTPS重定向,您需要重定向到https网址。您的版本只检测HTTPS是否为* OFF ,然后重定向到同一个网址,从而导致循环。你需要的是:
RewriteCond %{HTTPS} !^on
RewriteRule (.*) https://example.com/$1 [R=301,L]
答案 1 :(得分:0)
#if https on
RewriteCond %{HTTPS} on
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
#else
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]