Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess仅在某些页面上设置SSL重定向时无法正常工作_.htaccess_Mod Rewrite_Ssl - Fatal编程技术网

.htaccess仅在某些页面上设置SSL重定向时无法正常工作

.htaccess仅在某些页面上设置SSL重定向时无法正常工作,.htaccess,mod-rewrite,ssl,.htaccess,Mod Rewrite,Ssl,在寻找上述问题的答案时,我遇到了此脚本作为解决方案(我希望我的网站位于http上,除了一些页面,如登录、注册、管理等): 这个确切的例子应该可以在我的服务器上运行,但它只能部分工作,这意味着,它将所有页面重定向到http,但我无法打开login.php或register.php。webbrowser声明这些页面包含重定向循环,无法显示。我绝对不是模式重写或htaccess方面的专家,因此我非常感谢您的帮助 编辑: 我已经按照建议使用chrome插件运行了我的网站。我发现在login.php页面中

在寻找上述问题的答案时,我遇到了此脚本作为解决方案(我希望我的网站位于http上,除了一些页面,如登录、注册、管理等):

这个确切的例子应该可以在我的服务器上运行,但它只能部分工作,这意味着,它将所有页面重定向到http,但我无法打开login.php或register.php。webbrowser声明这些页面包含重定向循环,无法显示。我绝对不是模式重写或htaccess方面的专家,因此我非常感谢您的帮助

编辑: 我已经按照建议使用chrome插件运行了我的网站。我发现在login.php页面中有重定向循环http->https->http等(该页面上唯一的其他重定向是当用户已经签名时,但它似乎不像这个循环的原因)。我还尝试了不同的设置SSL的代码,这一个很有效:

# Rewrite Rules for example.com
RewriteEngine On
RewriteBase /

# Turn SSL on for payments
RewriteCond %{HTTPS} off
RewriteCond %{SCRIPT_FILENAME} \/login\.php [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# Turn SSL off everything but payments
RewriteCond %{HTTPS} on
RewriteCond %{SCRIPT_FILENAME} !\/login\.php [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
这一个工作正常,但是https只有一个例外,我希望有更多的例外(大约6个)。有人知道为什么第一个脚本不起作用吗?或者如何修改第二个以拥有更多https网站


谢谢

我也遇到过类似的问题,这对我来说很有效

在httpd.conf中的“虚拟主机”下,确保您同时具有以下两个功能:

ServerName域名.com

ServerAlias www.domain.com


在VirtualHost*:80和VirtualHost*:443中,您是否运行了一些CMS/php框架?这对我来说是正确的。我想还有别的东西在重定向用户。这可以是.htaccess中的其他规则、httpd.conf中的规则,甚至是文件中的位置头。我过去常常弄清楚重定向循环是怎么回事。嗨,谢谢你的回答。我已经用这个chrome插件检查了重定向,结果发现服务器正在通过http->https->http将浏览器无休止地重定向到login.php。。。在我的网站上,我使用php类uFlex来处理登录和注册,但我已经检查了源代码,我只有一个重定向-如果用户已签名(所以在这种情况下不应该重定向)。我的.htaccess中没有任何其他代码。你还有其他想法吗?我在做一些测试,注意到如果我用\/login\.php[NC]替换^/(login | register)\.php$,它会工作,所以我开始认为这是一个语法问题。据我所知,由于这一变化,我只能对https执行1个选项。有没有办法修改这个脚本,以便我能够为https设置更多的异常?
# Rewrite Rules for example.com
RewriteEngine On
RewriteBase /

# Turn SSL on for payments
RewriteCond %{HTTPS} off
RewriteCond %{SCRIPT_FILENAME} \/login\.php [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# Turn SSL off everything but payments
RewriteCond %{HTTPS} on
RewriteCond %{SCRIPT_FILENAME} !\/login\.php [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]