2013-03-18 22 views
0

首先让我告诉你更绿色,当涉及到mod重写这可能是正常的行为,但我正在寻找一种方法来阻止它。Mod_Rewrite掩码在协议切换上失败

RewriteRule ^Network-Status/$ ./serverstatus.php [L,NC] 

这是我的重写规则,我希望这所要做的只是重定向到serverstatus.php同时仍然掩盖它完美表现不俗的网址,但serverstatus.php被迫非SSL我不能改变这个以及从ssl到non-ssl的协议切换正在破坏URL掩码。

如果只是在这一页上,我可以忍受这一点,但它不是。我有其他的网站以相同的方式掩盖了一些不安全的网站。当我从无安全点击安全或反之亦然,我看到出现同样的问题。

我会给你一个例子。

安全页面 - >网络的状态/ URL屏蔽失败(协议转换)

网络的状态/ - >网络的状态/ URL屏蔽作品(无协议交换机)

网络的状态/ - >安全页URL掩蔽失败(协议开关)

如果有人能帮助我,我会再次成为一个快乐的人,这使我在两天的研究,调整和尝试不同的事情的最好的部分,最后我只能得出结论,这确实是一个直接的结果协议交换机。

如果这是一个选项,我只是强制重定向到所有非SSL连接的SSL,但这根本不是可选的,有三个关键领域,其中编码强制一个不安全的连接,我不能改变它,所以只要这些页面访问我结束了一个永无止境的循环。

+0

'serverstatus.php'如何强制non-ssl?当我请求“https:// www.example.com/serverstatus.php”时会发生什么? – 2013-03-18 23:30:14

+0

http://www.example.com/serverstatus.php在htaccess中使用forced-ssl Obvioucsy这是导致循环的原因。我不是什么原因,它的PHP我想有一个立即位置标题切换在文件的顶部,它已被ioncubed,所以我不能说,但这是我会做 – Chris 2013-03-18 23:34:53

+0

serverstatus.php做一个'header(Location :...)'重定向,如果用https调用它? – 2013-03-18 23:37:55

回答

1

如果你必须请求Network-Statusserverstatus.php)如HTTP,你可以强制使用自己先

RewriteCond %{HTTPS} on 
RewriteRule ^Network-Status/$ http://%{HTTP_HOST}/$0 [R,L,NC] 

,然后执行重写之后

RewriteRule ^Network-Status/$ /serverstatus.php [L,NC] 

你可以做从非同一以确保其他页面的安全。

RewriteCond %{HTTPS} !on 
RewriteRule ^other-page$ https//%{HTTP_HOST}/$0 [R,L,NC] 
RewriteRule ^other-page$ /otherscript.php [L,NC] 
+0

我现在就试一试,看看是否解决了这个问题。给我5分钟,我会知道这是否有效。 – Chris 2013-03-18 23:55:02

+0

我不能为你增加声誉,但这已经完全排除了问题,谢谢。 – Chris 2013-03-18 23:58:46

+0

我只是想为任何使用它的人添加一个注释,请确保你在每次重写时使用整个集合,我只是试图使用一个https条件,发现我打了循环。 – Chris 2013-03-19 00:18:03

相关问题