我想强制将一部分网页加入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]
答案 0 :(得分:0)
尝试在.htaccess上添加此行:
Options +FollowSymLinks -MultiViews
也许您还有一些其他规则可以执行此重定向 - 如果您提供.htaccess文件的全部内容,那将会很好。
您可能在实际的PHP脚本中重定向。
在任何情况下 - 如果您可以编辑Apache的配置文件(httpd.conf或httpd-vhost.conf),那么您可以启用重写调试(RewriteLoglevel 9
)并查看具体内容正在进行 - 这是最好的选择(如果可以的话)。