【发布时间】:2013-11-23 10:28:52
【问题描述】:
每个人:https://exp-resso.com/blog/post/2011/08/securing-your-expressionengine-website-with-https
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond $1 ^(member|account|checkout|system) [NC]
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
这会告诉您的服务器“如果 HTTPS 已关闭,并且请求以 会员或帐户或结帐或系统(不区分大小写),重定向 到
https://current-domain/current-page”。这是一个很好的简单方法 锁定整个子文件夹/模板组。
我已将其添加到我的 htaccess 文件中,如下所示:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond $1 ^(sign-in|sign-up) [NC]
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
但是,当我转到我的 http://mydomain.com/sign-in 时,URL 并没有更改为 https://mydomain.com/sign-in。知道有什么问题吗?
编辑 1:
我的 htaccess 也有以下内容(删除“www”),我想知道这两者是否会导致问题?
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
编辑 2:
排除过程,原来是这个问题造成的:
<IfModule mod_rewrite.c>
RewriteEngine On
# Removes index.php from ExpressionEngine URLs
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>
当我注释掉 RewriteRule 时,https:// 是强制的。 是什么导致了冲突?
【问题讨论】:
-
您为什么使用
.htaccess样式文件而不是正常配置?这些文件容易出错,会减慢一切,并且难以调试。