단일 페이지 JS 애플리케이션의 인덱스 페이지를 제거하고 해시되지 않은 URL을 해시된 URL로 리디렉션하도록 nginx 다시 쓰기 규칙을 구성하려면 어떻게 해야 합니까?

단일 페이지 JS 애플리케이션의 인덱스 페이지를 제거하고 해시되지 않은 URL을 해시된 URL로 리디렉션하도록 nginx 다시 쓰기 규칙을 구성하려면 어떻게 해야 합니까?

저는 단일 페이지 JS 애플리케이션을 작성하는 소프트웨어 개발자입니다. 저는 결코 시스템 관리자가 아니므로 양해해 주시기 바랍니다.

내가 달성하고 싶은 것은 사용자가 잠재적으로 공통적이거나 원치 않는 두 가지 URL 패턴 중 하나를 사용하여 내 사이트를 방문할 때마다 리디렉션이 발생하도록 하는 것입니다.

  1. mysite.com/index.html -> mysite.com으로 리디렉션
  2. mysite.com/path/they/remember -> 해시 버전으로 리디렉션: mysite.com/#/path/they/remember

다양한 방법을 시도했지만 계속 리디렉션 루프가 발생합니다. 현재 내가 가지고 있는 구성은 다음과 같습니다.

참고: /api에는 경량 oauth 프록시를 통해 내부적으로 모든 요청을 리디렉션해야 하므로 어떤 솔루션을 사용하더라도 이 리디렉션을 중단할 수 없습니다.

server {

# Redirect all requests through /api/ to apiproxy.php
location /api {
    rewrite ^/api/?(.*)$ /apiproxy.php/$1 last;
}

location / {
    index index.html
}

# use case #1 (combined with use case #2 optionally, a url such as mysite.com/index.html/path/they/remember)
location ~ /index.html/?(.*) {
    return 301 http://mysite.com\#/$1;
}

location ~ /(.*) {
    return 301 http://mysite.com\#/$1;
}

이 설정은 모든 방향에서 리디렉션 루프를 제공합니다. 누구든지 제안 사항이 있거나 내가 nginx 방식으로 수행하려는 작업을 수행하는 방법을 알고 있습니까?

답변1

먼저 로그 수준을 높이고 로그를 확인하세요.

마지막 위치 블록이 가짜인 것 같습니다.

또한 return 301 http://mysite.com\#/$1;합법적이지 않은 것 같습니다. 하고 싶었어 return 301 http://mysite.com/\#/$1/;?

탈출해야 해 #?

관련 정보