apache - 在https重定向中,htaccess重写规则失败

  显示原文与译文双语对照的内容

我的htaccess看起来像这样


RewriteEngine On
RewriteCond %{HTTP_HOST}!^localhost$
RewriteCond %{HTTP_HOST}!^$
RewriteCond %{HTTP_HOST}!^www. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteRule ^login/?(.*)$ login.php$1 [L]
RewriteRule ^register/?(.*)$ register.php$1 [L]

我想重定向我的页面登录并重定向到 https,所以我添加了以下代码


RewriteCond %{HTTPS} =on
RewriteCond %{REQUEST_URI}!^/(login|register)/?$
RewriteRule. *$ http://%{HTTP_HOST}%{REQUEST_URI} [L]

当我输入 ://www.xyz.com/login/it redirects https everything当我决定将页面重定向到没有登录或者 register的http to我写了 wrote


RewriteCond %{HTTPS} =on
RewriteCond %{REQUEST_URI}!^/(login|register)/?$
RewriteRule. *$ http://%{HTTP_HOST}%{REQUEST_URI} [L]

之后,我再次将 url http,重定向到

如果我点击链接收费 https ://www.xyz.com/login/://www.xyz.com/login/://www.xyz.com/news/1/,将 http 重定向为

时间: 作者:

尝试在 RewriteEngine On 行添加这个正确的below:


RewriteCond %{HTTPS} off
RewriteRule ^(login|register)(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R]

RewriteCond %{HTTPS} on
RewriteRule!^(login|register) http://%{HTTP_HOST}%{REQUEST_URI} [L,R]

看起来你的规则是错误的,两块规则是相同的。

作者:
...