.htaccess 将网页的子集强制为HTTPS
我想强制网页的一个子集以https和所有其他网页作为http。 在htaccess中,我使用了我在另一篇文章中找到的以下脚本,但它不起作用.htaccess 将网页的子集强制为HTTPS,.htaccess,mod-rewrite,https,.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 Rewr
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是强制的,但eg在我的浏览器中产生了无限循环错误。你知道哪里出了问题吗
我将代码改为下面的代码,这似乎是可行的,但现在由于网页上的安全和不安全项目,SSL仅部分实现。我检查了图片、样式表和外部javascript文件的URL,这些都是相对的,不应该造成问题。。。如果有人知道如何处理这件事,我很高兴听到
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]
Options+FollowSymLinks-多视图
在任何acse中——如果您可以编辑Apache的配置文件(httpd.conf或httpd vhost.conf),那么您可以启用重写调试(
RewriteLoglevel 9
)并查看到底发生了什么——这是最好的选择(如果可以)。感谢您的帮助。添加-多视图不会更改错误,没有其他重定向规则,我完全清理了htaccess文件以进行调试。我没有访问配置文件的权限,但我会询问我的主机。@DigitalMD如果它是共享主机,那么我怀疑他们会为您这样做(不太可能),因为这需要重新启动Apache+,这样的日志增长非常快。。而且我不确定它是否可以仅为1个特定域启用…无需强制HTTP用于非登录/注册页面(顺便说一句,帐户页面(如果您有)如何-它们是否将通过HTTP提供服务。相反,首先在您的代码中生成正确的URL(即代替
执行
),这样客户将始终转到HTTP,而无需mod_rewrite的帮助。如果客户希望通过HTTPS访问主页或任何其他页面。。那就让他吧,这没什么错。只要您拥有所有带有正确URL的链接,除非客户有意更改URL,否则这种情况永远不会发生。通过不强制使用HTTP,您就不会对安全页面上的不安全内容(CSS/JS/Images)产生问题。这就是我一直编写网站代码的方式。是的--更改所有链接以在现有页面中包含域名和协议需要做大量工作。。。但是对于新页面/新项目,这没有什么区别(没有额外的开销)。是--您应该能够通过mod_rewrite(添加一个或两个以上的条件)修复它。。但这不是正确的方式(至少在我看来)。谢谢你的帮助。我现在使用mod_rewrite在那些需要安全连接的页面上强制使用https。我删除了强制http的部分,因为这也强制将安全页面上的引用(例如js/css/image文件)重定向到http(这些文件在重写时未验证),并导致在同一页面上存在安全和非安全项的问题。将所有内容正确地引用到http或https(对于后者,在用户更改url的情况下强制使用https),并按照您的建议使用完整的url,所有内容现在都可以正常工作了。非常感谢。