2016-02-17 114 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烏鴉) –