我已经有这样的代码来强制这些URL以HTTPS:使用的.htaccess强制HTTP或HTTPS
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^/my/?.*$
RewriteCond %{REQUEST_URI} !^/my/basket/add?.*$
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^/login/?.*$
RewriteCond %{REQUEST_URI} ^/logout/?.*$
RewriteCond %{REQUEST_URI} ^/register/?.*$
RewriteCond %{REQUEST_URI} ^/newsletter/?.*$
RewriteCond %{REQUEST_URI} ^/reset-password/?.*$
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
而这个作品真的很好,但我想要做的是强迫任何网址不是符合上述条件以HTTP,发射一个301.
我不想创建一个HTTP
页面的列表并重定向他们,就像我上面的HTTPS
。安全网页的URL将始终保持不变,除非我以某种方式更改系统,但我可以在需要时更新它们。非安全页面可以通过动态创建,并由一些销售团队在这里创建/编辑,因此需要智能地定位这些页面。
有关我如何做到这一点的任何想法?它有要使用.htaccess
完成,我一直通过在我们的PHP框架内处理它来实现这一目标,但这导致了相当显着的性能问题,并导致我们的Google抓取出现问题。
干杯!
好吧,我明白了,我的HTTPS''RewriteRule'上的'L'标志表示,如果有匹配,我们使用HTTP,那么我们重定向,这是最后一条规则处理。但是如果我们已经在使用HTTPS呢?它会忽略我的原始条件并重定向回HTTP ......不是吗? – 2010-04-14 09:59:58
实际上,当我测试它时,它永远不会将任何内容重定向到HTTPS,而总是重定向到HTTP。 – 2010-04-14 10:04:14
你是对的,你将不得不为安全页面添加一个条件(将需要一些重复的东西)。请参阅编辑。 – Kazar 2010-04-14 10:11:23