我知道这个问题已经被问了很多,但我尝试了很多答案并没有成功。 我尝试这些答案: .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'之后可以获得更多信息。部分
答案 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>