我的.htaccess
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=302,L]
RewriteCond %{SERVER_PORT} 443
RewriteCond %{REQUEST_URI} /docs/ [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=302,L]
将 http 转发到 https 有效(前两行)。
http://www.xyz.com -> https://www.xyz.com
文件夹 /docs/ 应该重定向到 http(第 3-5 行)
https://www.xyz.com/docs/ger/abc/1.html -> http://www.xyz.cm/docs/ger/abc/1.html
但是我收到错误 310 (net::ERR_TOO_MANY_REDIRECTS) - 似乎我产生了一个无限循环,但是我该如何修复我的错误呢?
R=302 仅用于测试,最终将被 R=301 取代
答案1
你陷入了无限循环。你需要一个条件来专门忽略docs
端口 80 上的文件夹:
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} ! /docs/ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=302,L]
不过我要提醒你:如果你在同一个页面中混合使用 http 和 https,所有浏览器都会抛出大警告。不过,如果你只从一个链接到另一个,那就没问题了。
一如既往,在 Apache 中重定向、更改 URL 或将 HTTP 重定向到 HTTPS - 您想了解但又不敢问的有关 Mod_Rewrite 规则的一切和http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html