【发布时间】:2017-02-05 08:23:11
【问题描述】:
您好,这是我的重写条件:
LogLevel alert rewrite:trace3
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^/(myapp)/ - [E=MY_URL:1]
RewriteCond %{ENV:MY_URL} 1
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}
我正在尝试将所有内容重定向到 http://www.example.com/myapp/ 到https://www.example.com/myapp/,但似乎我陷入了无限循环,我尝试设置 2 个条件,所以如果 HTTPS 是在它上面不应该重定向,任何帮助将不胜感激,谢谢!
更新 1 我把它改成下面的
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^/myapp
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301]
我不明白 [R=301] 部分,但它仍然给我 ERR_TOO_MANY_REDIRECTS 错误
【问题讨论】:
-
您没有进行客户端重定向。没有
[R=301],所以它纯粹是内部重写。因为它只是内部的,所以你进入 no-ssl,设置你的 env var,然后你重新进入重写,那个 env var 仍然设置。 -
我更新了帖子,我删除了环境变量
-
r=301向客户端发送一个 http 301 重定向标头,说“去这里”,这是您的新 https 网址。没有它,你只是在做“内部 apache”内部重写,客户端本身将继续使用非 ssl 请求。
标签: apache redirect httpd.conf