nginx에서 단일 URL을 리디렉션하는 방법은 무엇입니까?


111

URL 구조를 재구성하는 중입니다. 특정 URL에 대한 리디렉션 규칙을 설정해야합니다. NGINX를 사용하고 있습니다.

기본적으로 다음과 같습니다.

http://example.com/issue1 --> http://example.com/shop/issues/custom_issue_name1
http://example.com/issue2 --> http://example.com/shop/issues/custom_issue_name2
http://example.com/issue3 --> http://example.com/shop/issues/custom_issue_name3

감사!


3
"isse"또는 "issue"?! 답변은 ... "문제를"가정
마태 복음 Wilcoxson에게

문제, 오타 수정
tokmak

답변:


122

이것을 서버 지시문에 넣으십시오.

location /issue {
   rewrite ^/issue(.*) http://$server_name/shop/issues/custom_issue_name$1 permanent;
 }

또는 복제하십시오.

location /issue1 {
   rewrite ^/.* http://$server_name/shop/issues/custom_issue_name1 permanent;
}
location /issue2 {
   rewrite ^.* http://$server_name/shop/issues/custom_issue_name2 permanent;
}
 ...

139
location ~ /issue([0-9]+) {
    return 301 http://example.com/shop/issues/custom_isse_name$1;
}

@Cybolic 방금 버전의 도커 이미지에서 이것을 테스트했는데 괜찮 았습니다. 1.10.3어떻게 든 구성 파일을 제공 할 수 있습니까? 아마도 뭔가 빠졌을 것입니다.
Mohammad AbuShady

34

몇 개 이상의 리디렉션을 복제해야하는 경우지도 사용을 고려할 수 있습니다.

# map is outside of server block
map $uri $redirect_uri {
    ~^/issue1/?$    http://example.com/shop/issues/custom_isse_name1;
    ~^/issue2/?$    http://example.com/shop/issues/custom_isse_name2;
    ~^/issue3/?$    http://example.com/shop/issues/custom_isse_name3;
    # ... or put these in an included file
}

location / {
    try_files $uri $uri/ @redirect-map;
}

location @redirect-map {
    if ($redirect_uri) {  # redirect if the variable is defined
        return 301 $redirect_uri;
    }
}

4
이것이 내가 여기에서 찾는 것입니다. 포함 된 파일에 넣는 것은 아파치의 RewriteRules로 가득 찬 .htaccess 파일을 대체하는 훌륭한 방법입니다.
Qaribou의 Josh

3
이지도 접근 방식을 기존 위치 / ... proxy_pass 유형 설정과 어떻게 결합 하시겠습니까?
Michael Dausmann 2015

@redirect-map위치 당신은 시도 할 수 if ($redirect_uri = "") {return 404;}proxy_pass 물건 하였다. 을 사용하여 다시 작성해야 할 수 $redirect_uri있습니다.
Cole Tierney 2011

location설정에 따라 2 개의 블록 대신 필요할 수 있습니다 . 예를 들어 Craft CMS 용입니다. location ~ ^(.*)$ { if ($redirect_uri) { # redirect if the variable is defined return 301 $redirect_uri; } try_files $uri $uri/ /index.php?p=$uri&$args; }
luwes
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.