htaccess的 - 重定向到HTTPS不工作
每页:https://exp-resso.com/blog/post/2011/08/securing-your-expressionengine-website-with-httpshtaccess的 - 重定向到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>
当我注释掉重写规则,将https://开头的力量。 什么导致冲突?
试图把(登录|注册)的条件内重写规则:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(sign-in|sign-up)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,NC,R=301]
这没有奏效。 – StackOverflowNewbie
@StackOverflowNewbie你确定,mod_rewrite是开启的吗?有没有重定向工作? – user4035
@StackOverflowNewbie我在这里测试它:http://htaccess.madewithlove.be/,它的工作。 – user4035
这是怎么回事? (如果端口== 80然后重定向)
RewriteEngine on
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} member [OR]
RewriteCond %{REQUEST_URI} account [OR]
RewriteCond %{REQUEST_URI} checkout [OR]
RewriteCond %{REQUEST_URI} system
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
'RewriteEngine On'是否必要?我只是复制'RewriteRule'上方的'RewriteCond $ 1 ^(会员|帐户|结帐|系统)[NC]'? – StackOverflowNewbie
是的,应该是。 (我刚刚编辑我的评论) –
它没有工作 – StackOverflowNewbie
首先确保重写工作在服务器上,并且读取htaccess(例如,通过在每个URL上发出重定向)。
然后使用RewriteCond %{REQUEST_URI} ^/(sign-in|sign-up)
代替RewriteCond $1 ^(sign-in|sign-up) [NC]
它的工作原理,并更容易阅读过
所以,你的htaccess应该是这样的
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{REQUEST_URI} ^/(sign-in|sign-up) [NC]
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
任何原因,你用'.htaccess'样式文件而不是正常的配置?这些文件容易出错,使所有的东西都慢下来,很难调试。 – arkascha