https htaccess排除一些网址

时间:2014-07-15 18:48:20

标签: apache .htaccess mod-rewrite ssl

我知道这个问题已经被问了很多,但我尝试了很多答案并没有成功。 我尝试这些答案: .htaccess ssl & non-ssl redirects

Remove SSL integration from a specific folder using htaccess

以及我在谷歌上发现的其他一些内容。 我只在网站的3个页面上有ssl,我想制定一般规则,其他页面应该在https时重定向到http。我喜欢Jon Snow,我对apache和htaccess一无所知。

所以这就是我到目前为止的尝试:

RewriteCond %{HTTPS} on
RewriteCond  %{REQUEST_URI} !^\/(page1|page2|page3)+ [NC]
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [L]

和此:

RewriteCond %{HTTPS} on
RewriteCond  %{REQUEST_URI} !^/page1/$
RewriteCond %{REQUEST_URI} !^/page2/$
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [L]

发送到http的部分可以工作,但异常不会或者他们将所有内容发送到http或重定向到索引。

澄清我没有同时放两个代码。

其他规则:

RewriteCond %{HTTP_HOST} !^www\.example\.com\$
RewriteRule (.*) http://www.example.com.br/$1 [R=301,L]


RewriteRule !\.(js|txt|ico|gif|GIF|jpg|JPG|png|PNG|css|swf|pdf|xml|XML|eot|EOT|ttf|TTF|woff|WOFF)$ index.php

根据要求提供完整网址: https://www.example.com.br/area-restrita/ 在' area-restrita'之后可以获得更多信息。部分

2 个答案:

答案 0 :(得分:1)

试试这段代码:

RewriteEngine On

RewriteCond %{HTTPS} on
RewriteCond %{THE_REQUEST} !/(area-restrita|page2) [NC]
RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI} [L,NE,R=302]

RewriteCond %{HTTP_HOST} !^www\.example\.com\$
RewriteRule (.*) http://www.example.com.br/$1 [R=301,L,NE]

RewriteRule !\.(js|txt|ico|gif|GIF|jpg|JPG|png|PNG|css|swf|pdf|xml|XML|eot|EOT|ttf|TTF|woff|WOFF)$ index.php [L,NC]

答案 1 :(得分:0)

如果您想将整个网站重定向到 https ,除了某些特定的目录/ URL,并且在某些特定情况下,您仍然希望它们通过 http 提供服务,则可以使用virtual.conf中的这种技术;否则,当RewriteCond匹配时,特定页面将始终收到错误“找不到404页面”

<VirtualHost *:80> 
  ServerName www.example.com

  RewriteEngine On 
  RewriteCond %{HTTPS} !=on 
  RewriteCond %{REQUEST_URI} !^/app1/.*$ [NC]
  RewriteCond %{REQUEST_URI} !^/app2/.*$ [NC]
  RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L] 

  RewriteCond %{HTTP_HOST} !=apps.example.com [NC]
  RewriteCond %{REQUEST_URI} ^/app1/.*$ [NC,OR]
  RewriteCond %{REQUEST_URI} ^/app2/.*$ [NC]
  RewriteRule ^.*$ http://apps.example.com%{REQUEST_URI} [R,L,P] 

</VirtualHost>

<VirtualHost *:80> 
  ServerName apps.example.com
  DocumentRoot /home/sites/example.com/public_html
</VirtualHost>