2016-02-17 113 views
2

我想在我的.htaccess设置一些规则以特定的方式工作:htaccess的重写规则到https不起作用与其他规则组合

  1. 特定页面重定向:

    RewriteRule "^web/site/mais$" https://www.main.com/front/for-you/insurance/ [R=301,L] 
    
  2. 首页重定向

    RewriteRule ^$ https://www.forexample.com.br/for-you/ [R=301,L] 
    RewriteRule ^/$ https://www.forexample.com.br/for-you/ [R=301,L] 
    
  3. HTTP到HTTPS,并添加www会休息(这是不工作),我尝试了很多东西:

    RewriteCond %{HTTP_HOST} !^www\. 
    RewriteCond %{HTTPS} !^on$ [OR] 
    RewriteCond %{HTTP:X-Forwarded-Proto} !https 
    RewriteRule (.*) https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
    RewriteCond %{HTTP_HOST} ^www\. 
    RewriteCond %{HTTPS} !^on$ [OR] 
    RewriteCond %{HTTP:X-Forwarded-Proto} !https 
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
    

其他办法我试过forgotting了www规则(但不工作太):

RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

,我发现是书面方式一般httpswww规则在httpd.conf和其他规则到.htaccess结合的唯一途径,但这样一来,我得到两个或两个以上301重定向,不良商家为SEO。

回答

2

你对所有的目录有问题吗?

因为如果你的ProxyPass(如你所说),也许它直接发送给您的重定向到Tomcat,所以也许你需要指定的规则进入ssl.conf中读取的规则之前离开的ssl.conf。试着写一下你写到ssl.conf后的最后一个ProxyPass

+2

是的,我有代理通行证images,js和css,将www的具体内容写入到ssl.conf和htaccess中,并且仅将httpd.conf写入代理服务器的图像,js和css,ir适用于我。我使用的规则是: ssl.conf在代理服务器下,向下.htaccess: 'RewriteCond%{HTTP_HOST}!^ www \。 RewriteRule(。*)https://www.% {HTTP_HOST}%{REQUEST_URI} [R = 301,L]' –

1

如果你想重定向一些spacific页到https,forexample,要重定向:

到 - https://www.example.com/page2.html

你可以尝试以下操作:如果你想从http到https整个网站重定向

RewriteEngine on 
RewriteCond %{HTTP_HOST} !^www\. [OR] 
RewriteCond %{HTTPS} off 
RewriteRule ^(page|page2)\.html$ https://www.example.com/$1.html [L,R] 

,您可以使用如下:

RewriteEngine on 


RewriteCond %{HTTP_HOST} !^www\. [OR] 
RewriteCond %{HTTPS} off 
RewriteRule ^(.*)$ https://www.example.com/$1 [NC,L,R] 
+0

它可以工作,但在很多情况下使用两个重定向。问题是我已经对主文件夹进行了proxypass规则,所以这些规则会导致请求直接发送到tomcat。很好,我已经修复了(或多或少)在ssl.conf中添加www规则的问题,借用httpd。在htaccess中清空重定向和其他人(如你所说)。这样,我得到只有一个301重定向在每个具体但两个,如果尝试从https重定向没有www(我不知道如果解释是清楚的,但它的作品足够的SEO乌鸦) –