2016-09-07 1 views
0

미안하지만, 내가해야 할 일이 정말 어리 석다. 그래서이 질문은 바보 같다. 아파치에서 NginX로 사이트를 옮깁니다. 그래서 .htacess 리디렉션을 NginX conf로 전송해야합니다. 그래서, 좋은 변환기를 발견하고 단일 규칙을 잘 작동합니다. 하지만 몇 가지를 구현하자마자 그 일이 발생합니다. 예를 들어, 두 단계 : 1. NONWWW - 그것은 mysite.com/index.php?p=123으로 잘 작동 htaccess로에서 URINginX에서 여러 조건/규칙이 작동 중일 때 리디렉션 체인을 피하십시오?

에서> WWW 2. 제거의 index.php -> (301) www.mysite.com/?p=123, 한 번에 하나의 리디렉션

하지만 NgonX에서

나도 같은 규칙을했고,이 체인으로 작동합니다

site.ru/index.php?p=123 -> (301) site.ru/?p=123 -> (301) www.site.ru/?p=123 제가 생각하기에 이것은 완전히 잘못되었습니다.

나는 바보이며 체인을 피하기 위해 조건과 규칙의 일부를 "괄호에 넣는 것"과 같은 표준 및 간단한 절차를 건너 뛰기를 바란다 ... 나에게 무엇이 잘못 되었습니까? 또는 내 방식은 NginX를 잊어 버리는 것입니다. - 멈출와의 index.php 제거가 작동하지 않습니다> WWW

# non-WWW to WWW 
if ($http_host !~ "^$"){ 
set $rule_0 1$rule_0; 
} 
if ($http_host !~* "^www."){ 
set $rule_0 2$rule_0; 
} 
if ($http_host ~ "(.+)$"){ 
set $rule_0 3$rule_0; 
set $bref_1 $1; 
} 
if ($rule_0 = "321"){ 
rewrite ^/(.*) http://www.$bref_1/$1 permanent; 
} 

# remove index.php string from URL 
if ($uri ~ "^/index.php$"){ 
set $rule_0 1$rule_0; 
} 
if ($rule_0 = "1"){ 
rewrite /./permanent; 
} 

이 위 NONWWW 후, 전혀 작동하지 않습니다 :이 예를 어떻게했는지

.

# non-WWW to WWW 
if ($http_host !~ "^$"){ 
set $rule_0 1$rule_0; 
} 
if ($http_host !~* "^www."){ 
set $rule_0 2$rule_0; 
} 
if ($http_host ~ "(.+)$"){ 
set $rule_0 3$rule_0; 
set $bref_1 $1; 
} 
if ($rule_0 = "321"){ 
rewrite ^/(.*) http://www.$bref_1/$1 permanent; 
} 

# remove index.php string from URL 
if ($uri ~ "^/index.php$"){ 
set $rule_0 1$rule_0; 
} 
if ($rule_0 = "1"){ 
rewrite /./permanent; 
} 

이 체인으로 만 작동합니다 ...

+0

여러 조건을 허용하지 마십시오! –

답변

0

는 WWW에 www가 아닌 ​​리디렉션. 많은 소스 (INC. official wiki) 방법에 의해 추천 - 하나에 리디렉션와 다른 서버 :

server { 
    server_name example.com; 
    return 301 $scheme://www.example.com$request_uri; 
} 
server { 
    server_name www.example.com; 
    .... 
} 

인덱스 제거

server { 
    server_name www.example.com; 
    .... 
    location/{ 
     rewrite ^/index\.php$/permanent; 
     .... 
    } 
} 
나는 그냥 '아무튼 confs에 Nginx에보다 배우기 ... 작동하는지 확인하지 않습니다
관련 문제