nginx에서 '페이지 경로 없음'을 반환하는 심볼릭 링크된 하위 디렉터리로 다국어 저장

magento.stackexchange https://magento.stackexchange.com//questions/64702

문제

우리는 다음을 사용하여 다국어 상점을 설정해야 했습니다. 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;
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 magento.stackexchange
scroll top