nginx에서 '페이지 경로 없음'을 반환하는 심볼릭 링크된 하위 디렉터리로 다국어 저장
-
12-12-2019 - |
문제
우리는 다음을 사용하여 다국어 상점을 설정해야 했습니다. subdirectory/symlink
설명된 방법 여기.(왜 @ 하단을 읽어보세요)
우리가 어떻게 했는지. index.php를 하위 디렉터리에 복사하고 모든 폴더를 심볼릭 링크했습니다.그만큼 base url
으로 설정되었습니다 domain.com/en
문제/질문이제 domain.com/en을 열면 웹사이트를 볼 수 있고 영어 버전이 표시됩니다.유일한 문제는 모든 카테고리 및 제품 링크가 '페이지 경로 없음' 오류를 생성한다는 것입니다.카테고리나 제품을 표시하는 대신.이제 어떻게 이런 일이 일어날 수 있습니까?
예그래서 https://domain.com/en/funkyshoes
funkyshoes 카테고리를 열지 않으며 funkyshoes도 마찬가지입니다. https://domain.com/funkyshoes
그 문제에 대한.https://domain.com/en/funkyshoes
반환 => no route to page
https://domain.com/funkyshoes
반환 => https://domain.com/en
왜 안 돼?왜냐하면 우리는 1개 이상의 멀티 스토어를 갖고 있고 모든 스토어에 en/de/fr과 같은 lang store_code를 제공할 수 없고 스토어당 서로 다른 도메인을 가진 멀티 스토어가 하나 있고 다른 하나는 메인 도메인의 /en, /de, /fr 메소드를 사용하기 때문입니다. .
해결책 2
더 나은 솔루션은 다음과 같습니다.
location / {
try_files $uri $uri/ @rewrite;
}
location @rewrite {
rewrite /(../)? /$1index.php?$args;
}
Catalog|Checkout|고객에 대한 특별한 위치 규칙이 있었기 때문입니다.문제는 모두 @rewrite를 참조했다는 것입니다. 이 방법으로 우리는 /en 이상 /fr 및 /de에 대해 별도의 일치 항목을 갖도록 설정된 모든 위치 명령을 다시 작성해야 했습니다.....
그래서 우리는 먼저 /에 대해 테스트한 다음 /(두 글자 코드)에 대해 테스트하는 가장 간단한 대체 재작성을 생각해 냈습니다.그리고 이를 토대로 다시 작성
잘 작동하는 것 같아요
또한 store_code 조회를 변경해야 합니다./en으로 인해 http_host 변수 또는 서버 변수가 더 이상 작동하지 않습니다.
가능한 해결책은 여기에서 찾을 수 있습니다:https://stackoverflow.com/questions/30078679/nginx-conf-w-multiple-maps-to-same-variable
다른 팁
이것은 NGINX 문제입니다.
이것을 conf 파일에 추가하면 문제가 해결되었습니다.
location /en {
rewrite ^/en(.*)$ /en/index.php last;
}