2014-09-01 4 views
1

HTTP에서 HTTPS으로 성공적으로 이동했으며 이제 일부 리디렉션 체인이 있습니다. 우리는 직접, 다음을 수행 할 : HTTP에서Magento에서 HTTP 대 HTTPS 및 301 리디렉션 체인

  1. : HTTPS에 //domain.tld가 : HTTP에서

  2. 을 //www.domain.tld : //domain.tld/subdir/를 HTTPS에 : //www.domain.tld/subdir/

는 지금, www가이 같은 301HTTPS에 다시 먼저 추가됩니다

  1. HTTP : //domain.tld => HTTP : //www.domain.tld =>은 https :

    를 //www.domain.tld
  2. HTTP : //domain.tld/subdir/ => HTTP : //www.domain.tld/subdir/ =>은 https : 또한

//www.domain.tld/subdir/, 가능하다면, 서버의 모든 다른 도메인 (마 젠토 저장), 안 HTTPS를 사용할 수 있어야하며 HTTPS로 다시 리디렉션되어야합니다. 당신은 이런 식으로 하나의 301 리디렉션 규칙에 모두 http->httpsnon-www->www 규칙을 결합 할 수 있습니다

DirectoryIndex index.php 
SetEnvIf SERVER_PORT 443 HTTPS=on 
SetEnvIf X-Forwarded-Proto https HTTPS=on 

<IfModule mod_rewrite.c> 

// DEFAULT // 
RewriteEngine on 
Options +FollowSymLinks 
RewriteBase/
DirectoryIndex index.php 


// REDIRECT ALL TO HTTPS // 
RewriteCond %{HTTP_HOST} www\.domain\.tld [NC] 
RewriteCond %{HTTPS} !=on 
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L] 

// REMOVE INDEX.PHP AND REIDIRECT TO ROOT DIRECTORY // 
# IN ALL DIRECTORIES (EVEN IN SUB DIRECTORIES) 
# RewriteCond %{THE_REQUEST} /index\.php [NC] 
# ONLY WHEN ON ROOT 
RewriteCond %{THE_REQUEST} \s+/index\.php [NC] 
RewriteRule ^(.*?)index\.php$ /$1? [L,R=301,NC,NE] 

// REMOVE HOME REWRITE FROM MAGENTO // 
RewriteRule ^home/?$ /? [R=301,L,NC] 

// ADD WWW TO NONE WWW FOR BOTH HTTPS AND NONE HTTPS // 
RewriteCond %{HTTP_HOST} !^$ 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteCond %{HTTPS}s ^on(s)| 
RewriteRule^http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

// REDIRECT ALL .HTML FILES AND ALL .HTML/ FILES WITH TRAILING SLASH // 
RewriteRule ^google[0-9a-f]+.html$ - [L] 
RewriteRule (.+)\.html$ /$1/ [L,R=301] 
RewriteRule (.+)\.html\/$ /$1/ [L,R=301] 

// ADD TRAILING SLASH // 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ $1/ [L,R=301] 

// CHECK IF REDIRECT POINTS TO A VALID FILE ## 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

// REWRITE EVERYTHING ELSE TO INDEX.PHP // 
RewriteRule .* index.php [L] 

</IfModule> 

답변

1

감사 :

# // REDIRECT main domain to HTTPS and add www // 
RewriteCond %{HTTP_HOST} !^(?!www\.)[^.]+\.domain\.tld$ [NC] 
RewriteCond %{HTTP_HOST} ^domain\.tld$ [NC,OR] 
RewriteCond %{HTTPS} off 
RewriteRule^https://www.domain.tld%{REQUEST_URI} [R=301,L,NE] 

# redirect sub domains to non http 
RewriteCond %{HTTP_HOST} ^(?!www\.)[^.]+\.domain\.tld$ [NC] 
RewriteCond %{HTTPS} on 
RewriteRule^http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE] 
+0

덕분에 @anubhava 거의 작동합니다. 위의 규칙을 사용하여 설정 한 도메인에서 완벽하게 작동하지만 다른 모든 도메인 (Magento 상점)도이 도메인으로 다시 리디렉션됩니까? – Alldo

+0

하위 도메인에 대해'http-> https'를 리디렉션하지 않으시겠습니까? – anubhava

+0

맞습니다. 이 옵션은 동일한 서버에서 총 5 개의 도메인 중 하나의 도메인에 대해서만 유효해야합니다. 가능한 경우 다른 모든 도메인을 없음 https로 리디렉션하고 싶습니다. – Alldo