.htaccess重定向到https,管理员网址除外

时间:2016-12-31 15:27:42

标签: apache .htaccess mod-rewrite url-rewriting cloudflare

我想将所有前端请求重定向到安全网站https,并且所有管理员/后端网址都应保持不安全的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]

请帮帮我。

1 个答案:

答案 0 :(得分:1)

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

RewriteCond %{REQUEST_URI} !admin

或许:

RewriteCond %{REQUEST_URI} !^/admin/

如果适合您的网址,或者:

RewriteCond %{REQUEST_URI} !^/admin

(如果前端网址应该包含' admin'在其中某处)

但无论如何,你可能只是在你的浏览器工作之前就已经在你的浏览器中缓存了一个重定向。清除缓存或忘记此网站"。

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

但是,如果不是通过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。所以这也将涵盖这一点。