强制将网页子集作为HTTPS

时间:2011-07-11 20:24:40

标签: .htaccess mod-rewrite https

我想强制将一部分网页加入https,将所有其他网页强制为http。 在htaccess中,我使用了我在另一篇文章中找到的以下脚本,但这不起作用......

RewriteCond %{HTTPS} off
RewriteRule ^(login|signup)\.php https://%{HTTP_HOST}%{REQUEST_URI} [R,L,QSA]

RewriteCond %{HTTPS} on
RewriteCond ${REQUEST_URI} !(login|signup)\.php
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R,L,QSA]

HTTP被强制应该是,HTTPS被强制应该是,但是例如https://mywebsite.com/signup在我的浏览器中产生无限循环错误。任何想法出了什么问题?

我将代码更改为以下似乎有效的代码,但现在由于网页上安全且不安全的项目,SSL仅部分实施。我检查了URL,例如图像,样式表和外部javascript文件位这些都是相对的,不应该造成问题...如果有人知道如何处理这个,我会很高兴听到它。

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^/login$ [OR]
RewriteCond %{REQUEST_URI} ^/signup$
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !login$
RewriteCond %{REQUEST_URI} !signup$
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}  [R,L]

1 个答案:

答案 0 :(得分:0)

  1. 尝试在.htaccess上添加此行:

    Options +FollowSymLinks -MultiViews

  2. 也许您还有一些其他规则可以执行此重定向 - 如果您提供.htaccess文件的全部内容,那将会很好。

  3. 您可能在实际的PHP脚本中重定向。

  4. 在任何情况下 - 如果您可以编辑Apache的配置文件(httpd.conf或httpd-vhost.conf),那么您可以启用重写调试RewriteLoglevel 9)并查看具体内容正在进行 - 这是最好的选择(如果可以的话)。