example.com/wiki로 시작하지 않는 모든 example.com/path를 example.com/wiki로 리디렉션 - NginX 프록시

example.com/wiki로 시작하지 않는 모든 example.com/path를 example.com/wiki로 리디렉션 - NginX 프록시

최근 웹사이트를 WordPress에서 Confluence로 옮겼는데 페이지 리디렉션에 문제가 있습니다. 내 Confluence에 사용자 정의 404 페이지를 설정했지만 입력할 때만 작동합니다.

https://www.freesoftwareservers.com/asdasdas

하지만 다음과 같은 오래된 링크로 이동하면

https://www.freesoftwareservers.com/index.php/2015/09/03/install-dd-wrt-on-linksys-ea6500/

내 Fusion 페이지로 이동하게 되지만 이것은 /wiki제가 대중에게 공개하고 싶은 특별한 플러그인입니다. 다른 하위 도메인을 통해 페이지에 액세스한 다음 www.

내 "해결 방법"은 두 가지 중 하나입니다.

1) 모두 https://www.freesoftwareservers.com/index.php/*리디렉션https://www.freesoftwareservers.com/wiki

2) 모두 https://www.freesoftwareservers.com/(Anything BUT /wiki)리디렉션https://www.freesoftwareservers.com/wiki

NginX 웹사이트에서 비슷한 것을 찾았는데, 필요한 것보다 더 복잡하고 필요한 표현을 사용하는 데 어려움을 겪고 있습니다.

https://www.nginx.com/blog/creating-nginx-rewrite-rules/

다음은 rewrite 지시문을 사용하는 NGINX 다시 쓰기 규칙의 예입니다. 이는 /download 문자열로 시작하고 경로 뒤 어딘가에 /media/ 또는 /audio/ 디렉터리를 포함하는 URL과 일치합니다. 이러한 요소를 /mp3/로 바꾸고 적절한 파일 확장자 .mp3 또는 .ra를 추가합니다. $1 및 $2 변수는 변경되지 않은 경로 요소를 캡처합니다. 예를 들어 /download/cdn-west/media/file1은 /download/cdn-west/mp3/file1.mp3이 됩니다.

server {
    ...
    rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 last;
    rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra  last;
    return  403;
    ...
}

404를 반환하는 서버 블록과 404 핸들러의 두 부분으로 분할해야 할 수도 있지만 이 모든 것을 기존 nginx 서버 블록에 유지하고 싶습니다.

그런데, 나는 domain.com/을 domain.com/wiki로 리디렉션하기 위해 다음 재작성 규칙을 사용했지만, 입력할 때만 작동합니다.https://www.freesoftwareservers.com결국 아무것도 없습니다.

rewrite     ^/$ /wiki permanent;

도움을 주셔서 감사합니다. 인터넷에 제 사이트 링크가 깨져 있는 경우가 많습니다 :)

답변1

글쎄, 현상금을 게시한 후 내 문제에 대한 더 나은 설명을 작성하는 동안 그것을 알아냈습니다...

rewrite ^/index.php /wiki permanent;

관련 정보