.htaccess 重定向到 https,admin 除外 url

.htaccess redirect to https except admin url

我想将所有前端请求重定向到安全站点 https,所有管理/后端 url 应保持不安全的 http。 另外,我用的是Cloudflare CDN。

我的重写规则不起作用,所有查询都转到 https。

RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteCond %{REQUEST_URI} !admin
RewriteRule ^ https://example.com%{REQUEST_URI} [L,R=301]

请帮帮我

它应该可以正常工作,尽管我会更改:

RewriteCond %{REQUEST_URI} !admin

也许:

RewriteCond %{REQUEST_URI} !^/admin/

如果这适合您的 URL,或者:

RewriteCond %{REQUEST_URI} !^/admin

(如果前端 URL 应该在某处有 'admin')

但无论如何,您可能只是在浏览器中缓存了一个重定向,该重定向在您开始工作之前就已缓存。清除缓存或 "forget this site".

同时删除第二行,无需检查两次。

但不运行您的管理员也通过 HTTPS 是一种耻辱,只是为了登录时的安全等。以及传输机密数据。

更新

由于清除缓存并没有修复它(见评论)推荐enabling logging

更新 2

根据评论中的讨论,试试这个:

RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteCond %{REQUEST_URI} !^(/index\.php)?/admin(/|$)
RewriteRule ^ https://example.com%{REQUEST_URI} [L,R=301]

这是因为看起来您的应用程序在生成管理 URL 时可能正在添加 /index.php。所以这也涵盖了这一点。