Apache .htaccess重定向到https,管理员url除外
我想将所有前端请求重定向到安全站点https,所有管理员/后端URL应保持不安全的http。 此外,我使用Cloudflare CDN 我的重写规则不起作用,所有查询都转到httpsApache .htaccess重定向到https,管理员url除外,apache,.htaccess,mod-rewrite,url-rewriting,cloudflare,Apache,.htaccess,Mod Rewrite,Url Rewriting,Cloudflare,我想将所有前端请求重定向到安全站点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=30
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”)
但无论如何,你可能只是在你的浏览器中缓存了一个重定向,在你让它工作之前。清除缓存或“忘记此站点”
同时拆下管路2,无需检查两次
但不通过HTTPS运行你的管理员是一件很遗憾的事情,只是为了在登录到它时的安全以及传输机密数据
更新
因为清除缓存并不能修复它(请参阅注释),所以建议您这样做
更新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。所以这也涵盖了这一点。使用
REQUEST
变量,而不是REQUEST\u URI
感谢您的快速回答,Cloudflare CDN的第二行,否则我会收到很多重定向错误。这是您浏览器中的缓存吗?什么意思,它不起作用?请确切地告诉我发生了什么?它将example.com/admin重定向到https。您可以尝试其他浏览器来确定吗?是否在任何地方设置了其他重定向逻辑?下一步是启用mod rewrite日志,如果可以的话,看看发生了什么。