使用htaccess https到某些URL的http

时间:2014-02-15 15:58:28

标签: .htaccess http ssl https

我在一些问题答案中尝试了一些代码提示,但我没有运气。

所以我作为我的问题。

我想将某些网址的格式https重定向到http。

我的htaccess代码的一部分是以下。但它不起作用URL仍然保留在SSL上。 主要的SSL直接来自服务器。

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} ^/index.php?lang=de&Itemid=231
RewriteCond %{REQUEST_URI} ^/index.php?lang=en&Itemid=337
RewriteCond %{REQUEST_URI} ^/index.php?lang=fr&Itemid=338
RewriteCond %{REQUEST_URI} ^/index.php?option=com_content&view=category&layout=blog&id=58&Itemid=231&lang=de
RewriteCond %{REQUEST_URI} ^/index.php?option=com_content&view=category&layout=blog&id=58&Itemid=337&lang=en
RewriteCond %{REQUEST_URI} ^/index.php?option=com_content&view=category&layout=blog&id=58&Itemid=338&lang=fr
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

提前感谢您的帮助。


我尝试用Sumurai8的代码片段来解决我的问题。但我没有运气。它仍然保留在SSL上。可能是因为SSL来自Apache-Server Confixx配置?

我还检查了缓存。此外,我无法使用简化代码的代码。它说,它无法完成请求 - >环。

  

查询字符串不包含在RewriteRule的第一个参数中,或者可以与%{REQUEST_URI}匹配

我是否需要添加新规则以匹配条件?

喜欢:

RewriteRule .* http://%{HTTP_HOST}%{QUERY_STRING} [R=301,L]

更新

htaccess文件位于html文件夹中。所以不要在子文件夹中。

目前的漏洞代码如下:

Action php /cgi-php53/php
AddHandler php53 .php

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
RewriteCond %{HTTPS} on
RewriteCond %{QUERY_STRING} ^/index.php?lang=de&Itemid=231 [OR]
RewriteCond %{QUERY_STRING} ^/index.php?lang=en&Itemid=337 [OR]
RewriteCond %{QUERY_STRING} ^/index.php?lang=fr&Itemid=338 [OR]
RewriteCond %{QUERY_STRING} ^/index.php?option=com_content&view=category&layout=blog&id=58&Itemid=231&lang=de [OR]
RewriteCond %{QUERY_STRING} ^/index.php?option=com_content&view=category&layout=blog&id=58&Itemid=337&lang=en [OR]
RewriteCond %{QUERY_STRING} ^/index.php?option=com_content&view=category&layout=blog&id=58&Itemid=338&lang=fr
RewriteRule .* http://%{HTTP_HOST}%{QUERY_STRING} [R=301,L]

不活跃的条件和规则

#RewriteCond %{HTTP_HOST} ^chimia.ch
#RewriteRule (.*) http://scg.ch/$1 [R=301,L]

#RewriteCond %{HTTP_HOST} ^myow.ch
#RewriteRule (.*) http://scg.ch/$1 [R=301,L]

#RewriteCond %{HTTP_HOST} ^polycoll.ch
#RewriteRule (.*) http://scg.ch/$1 [R=301,L]

#RewriteCond %{HTTP_HOST} ^swiss-chem-soc.ch
#RewriteRule (.*) http://scg.ch/$1 [R=301,L]

#RewriteCond %{HTTP_HOST} ^youngchemists.ch
#RewriteRule (.*) http://scg.ch/$1 [R=301,L]

#RewriteCond %{HTTP_HOST} ^www.chimia.ch
#RewriteRule (.*) http://scg.ch/$1 [R=301,L]

#RewriteCond %{HTTP_HOST} ^www.myow.ch
#RewriteRule (.*) http://scg.ch/$1 [R=301,L]

#RewriteCond %{HTTP_HOST} ^www.polycoll.ch
#RewriteRule (.*) http://scg.ch/$1 [R=301,L]

然后是一些重定向:

Redirect /cours/2014-aa1f https://scg.ch/index.php?option=com_superevents&redirect=category&catid=74&Itemid=525&task=group&view=details&id=2674&lang=en

Redirect /cours/2014-aa2f https://scg.ch/index.php?option=com_superevents&redirect=category&catid=74&Itemid=525&task=group&view=details&id=2678&lang=en

Redirect /cours/2014-aa3f https://scg.ch/index.php?option=com_superevents&redirect=category&catid=74&Itemid=525&task=group&view=details&id=2689&lang=en

更多重定向

Redirect /roempp https://scg.ch/index.php?option=com_content&view=article&id=926:roempp-online-special-offer-for-scs-members&catid=9:scg-news&Itemid=112&lang=en

Redirect /login https://scg.ch/index.php?option=com_comprofiler&task=login&lang=en


ErrorDocument 404 /

感谢您提前获得更多帮助。此致

1 个答案:

答案 0 :(得分:0)

你的规则似乎很好,除了一件事。查询字符串不包含在RewriteRule的第一个参数中,或者可以与%{REQUEST_URI}匹配。此外,正则表达式中的?字符表示“匹配前一个字符0或1次”,.字符表示“匹配任何字符”。您需要将其与%{QUERY_STRING}匹配或与%{THE_REQUEST}匹配。

您可以通过将公共部分(index.php)移动到RewriteRule的第一个参数来简化它,在描述每个可能的查询字符串的所有条件之前启用所需的HTTPS。通过用OR标志链接这些条件,只要其中一个是真的,只有其中一个必须为真。

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

RewriteCond %{HTTPS} on
RewriteCond %{QUERY_STRING} ^lang=de&Itemid=231$ [OR]
RewriteCond %{QUERY_STRING} ^lang=en&Itemid=337$ [OR]
RewriteCond %{QUERY_STRING} ^lang=fr&Itemid=338$ [OR]
RewriteCond %{QUERY_STRING} ^option=com_content&view=category&layout=blog&id=58&Itemid=231&lang=de$ [OR]
RewriteCond %{QUERY_STRING} ^option=com_content&view=category&layout=blog&id=58&Itemid=337&lang=en$ [OR]
RewriteCond %{QUERY_STRING} ^option=com_content&view=category&layout=blog&id=58&Itemid=338&lang=fr$
RewriteRule ^index\.php$ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]