하위 폴더의 다른 상점보기 또는 웹 사이트


29

고객은 자신의 멀티 스토어 상점을 다음과 같이 설정하려고합니다.

이것은 예이지만 더 많은 다른 하위 폴더가있을 수 있습니다. 상점보기 / 웹 사이트마다 다른 하위 폴더를 처리하는 가장 좋은 방법은 무엇입니까?

나는 하나 개의 솔루션 하위 폴더라는 만드는 것입니다 알고 de, en등 및 해당 하위 폴더에 index.php에와 htaccess로 복사합니다.

파일 복제를 최소화하기위한 몇 가지 해결 방법 (index.php의 심볼릭 링크, .htaccess를 사용하는 대신 vHost 구성)이있을 수 있지만 파일 시스템에서 변경을 수행 할 필요는 없지만 해결책을 찾고 싶습니다. 구성별로 모든 것을 처리하십시오.


최신 정보

이를 수행하기위한 가장 좋은 방법은 하위 폴더를 만드는 것임을 엔터프라이즈 지원 부서에서 확인했습니다.

우리는 다음과 같이 끝냈습니다.

  • "languagefolders"디렉토리 만들기
  • 조정 된 .htaccess와 함께 Magento 폴더에 대한 심볼릭 링크 (app /, errors /, ...)와 함께 index.php 사본을 디렉토리에 작성했습니다.
  • "languagefolders"디렉토리를 가리키는 Magento 루트 디렉토리 내에 "de", "en"등의 심볼릭 링크 생성

이렇게하면 새로운 심볼릭 링크 (예 : "fr")를 만들어 새로운 언어를 추가 할 수 있습니다.


우리는 웹 사이트가 제품이나 카테고리를 찾을 수 없다는 것을 발견하기 위해이 작업을 수행했습니다 (Magento 404 / 페이지로 연결되지 않음). 이것도 만났습니까?
— snh_nl

내가 기억하는 한 미안 모든 인덱스를 다시 작성 했습니까?
— Matthias Zeis

우리는 nginx를 사용하며 conf가 작동하려면 업데이트가 필요합니다. 내 의견을 업데이트하겠습니다
— snh_nl

2 가지 더 이상한 것들. 1) / checkout은 404를 반환하고 2) 언어 선택기 : 영어를 클릭 한 다음 영어를 다시 클릭하면 uri가 / en / en / en / etc 등을 계속 추가한다는 것을 알 수 있습니다. 기본 URL로 무엇을 선택 했습니까? domain.com/ko 또는
— didi

우리는 domain.com/en/을 선택했습니다.
— Matthias Zeis

답변:


18

URL을 기반으로 여러 도메인 / 경로를 제공하는 것은 매우 쉽습니다. 언급했듯이 고유 core/store코드를 경로에서 하위 폴더로 사용할 수있는 경우 가장 쉬운 설정 (구성 전용)이 가능합니다 . 이를 위해서는 다음 중 하나가 필요합니다.

  1. 방문자는 처음에 올바른 하위 폴더 경로에 연결되어 있습니다
  2. 방문자에게는 상점을 선택하고 쿠키를받는 방문 페이지가 제공됩니다.
  3. 일부 메커니즘은 PHP가 응답을 처리하기 전에 실행 유형 및 실행 코드를 설정하는 데 사용됩니다.

# 3과 관련하여 : 1.4 Magento부터는 웹 서버가 실행중인 컨텍스트 ( website 또는 store )와 사용해야하는 특정 코드 를 결정할 수있게되었습니다. 에서 의 index.php :

/* Store or website code */
$mageRunCode = isset($_SERVER['MAGE_RUN_CODE']) ? $_SERVER['MAGE_RUN_CODE'] : '';

/* Run store or run website */
$mageRunType = isset($_SERVER['MAGE_RUN_TYPE']) ? $_SERVER['MAGE_RUN_TYPE'] : 'store';

Mage::run($mageRunCode, $mageRunType);

환경 변수는 응용 프로그램을 초기화하는 데 사용되는 반면 PHP가 시작되기 전에 시스템에 영향을 줄 수 있습니다. Apache를 mod_rewrite사용하면 약간의 속임수가있는 하위 폴더에 대해 다음을 수행 할 수 있습니다.

RewriteCond %{REQUEST_URI} ^/de/$
RewriteRule .* - [E=MAGE_RUN_CODE:deutsch]
RewriteCond %{ENV:REDIRECT_MAGE_RUN_CODE} (.+)
RewriteRule .* - [E=MAGE_RUN_CODE:%1]

Apache는 이 탁월한 SO answer에서 보여 주듯이 환경 변수와 하위 폴더로 인해 복잡합니다 . 처음 두 줄은 결과를 $_SERVER["REDIRECT_MAGE_RUN_CODE"] = 'deutsch';낳지 만 후자 두 줄은 필요한 것을 제공합니다 $_SERVER["MAGE_RUN_CODE"] = 'deutsch';. 다른 많은 트릭이 있지만 위의 내용은 저를 물었습니다.

최종 목표는 사용자가 후속 요청에서 논리를 우회 / 단계 화하는 데 사용할 수있는 상점 쿠키를 설정하도록하는 동안 합리적인 수준 (초심자 + 다국어 문제)으로 초기 감지하는 것이어야합니다.


1
고마워, 벤 이렇게하면 매장 뷰를 초기화 할 수 있지만 Magento 404 페이지 ( "Whoops, our bad")가 항상 나타납니다. 기본 URL을 domain1.org/en , domain.org/de 등으로 설정했습니다. 스킨 URL, 미디어 URL 등이 domain.org/ (skin | media | ...) 로 설정되어 있습니다. 일반적인 "copy index.php 및 .htaccess"접근 방식을 사용하면 올바른 페이지가 반환됩니다.
— Matthias Zeis

나는 우리가 달성하려는 것에 가장 가깝게 접근함에 따라이 답변을 받아 들였다.
— Matthias Zeis

"URL에 상점 코드 추가"설정이 작동하지 않는다는 사실에 놀랐습니다.
— benmarks

상점 코드는 고유해야합니다. de /, fr / 또는 en /로 끝나는 여러 상점보기에서 어떻게 작동해야합니까?
— Matthias Zeis

필자는 복제 된 상점 코드를 놓쳤다 고 생각하지만 + 하위 폴더 레벨 1을 mode_rewrite기반으로하는 일부 웹 서버 기반 재 작성 (예 HTTP_HOST
— :)

9

들여 쓰기 된 URL (하위 폴더)의 이름이 상점 코드와 같은 이름을 가질 수있는 경우 (사용하지 않는 이유는 무엇입니까?) 간단히 활성화 할 수 있습니다 Configuration > Web > Url options > Add Store Code to Urls.


맞다면 하위 폴더조차 필요하지 않습니다. URL 재 작성이 활성화되어 있으면 Magento는 "en"이 상점보기 코드임을 알고 하위 폴더를 찾지 않습니다.
— Paul Grigoruta

8
이 솔루션의 문제점은 Magento가 Magento 설치에서 하나의 상점 코드 "de"만 허용한다는 것입니다. 따라서 같은 언어를 사용하는 여러 웹 사이트가있는 경우 다른 상점 코드를 사용해야합니다 (예 : de_de, de_en, ...
— therouv)

2
루븐이 찾았어요 문제점은 동일한 상점 코드로 여러 상점을 가질 수 없다는 것입니다.
— Anna Völkl

네, 문제는 Rouven이 말했듯이 동일한 상점 코드를 사용하여 두 개의 상점보기를 가질 수 없다는 것입니다.
— Matthias Zeis

Rouven이 올바르게 처리했음을 확인합니다. 버그가 Magento에보고되었습니다. 멀티 스토어가 더 많은 이러한 현대적인 환경에서는 이것이 작동해야합니다. 그러나 설정 Add store codes to url을 상점보기 설정 으로 만들 수 있다고 생각 하십니까? magento.stackexchange.com/questions/60686/... = 것은 가정이 9월 도메인 1 multistore, 다른 용도 / EN 및 / FR
— snh_nl

3

우리는 정확히 그 일을 끝냈습니다

이를 수행하기위한 가장 좋은 방법은 하위 폴더를 만드는 것임을 엔터프라이즈 지원 부서에서 확인했습니다.

우리는 다음과 같이 끝냈습니다.

  • "languagefolders"디렉토리 만들기
  • 조정 된 .htaccess와 함께 Magento 폴더에 대한 심볼릭 링크 (app /, errors /, ...)와 함께 index.php 사본을 디렉토리에 작성했습니다.
  • "languagefolders"디렉토리를 가리키는 Magento 루트 디렉토리 내에 "de", "en"등의 심볼릭 링크 생성

이렇게하면 새로운 심볼릭 링크 (예 : "fr")를 만들어 새로운 언어를 추가 할 수 있습니다.

백엔드에서 상점 base url을domain.com/en

nginx를 사용하는 경우 새 하위 폴더에서도 index.php를 처리하려면 위치 처리가 업데이트되어야합니다. 모든 새 번역 폴더에 대해이 작업을 수행해야합니다.


snh_nl 마지막 두 줄의 의미를 설명 할 가능성이 있습니까? 이전에 말했던 것과 같은 문제가 있지만 이해할 수 없습니다 : nginx를 사용하는 경우 새 하위 폴더에서도 index.php를 처리하려면 위치 처리에 업데이트가 필요합니다. 이것은 모든 새 번역 폴더에 대해 수행해야합니다. 나는 nginx를 사용하고 있으며 같은 일을하려고합니다. 감사합니다
— vbak

location @rewrite { rewrite /(../)? /$1index.php; }
— snh_nl

2

공식 Magento 기술 자료 에는이를 정확하게 설명 하는 항목 이 있습니다.

Apache를 사용하는 경우 각 도메인에 대한 모든 가상 호스트 항목이 Magento 설치가있는 동일한 문서 루트를 가리키는 지 확인하십시오. 그것은 여러 도메인을위한 것입니다.

다음 (그리고 마지막) 것은 동일한 Magento 설치 폴더에 있는 .htaccess 입니다. .htaccess는 강력한 서버 수준 구성 파일로, 각 서버 요청마다 규칙 작업을 설정할 수 있습니다. 따라서 모든 다른 (하위) 도메인 / 폴더 작업을 처리하고 초기화 단계에서 Magento가 사용하는 올바른 서버 변수를 설정해야합니다.

서버 구성을 마친 후에는 Magento admin (시스템-구성-일반-웹)의 각 저장소에 대해 서로 다른 기본 경로를 설정해야합니다.

따라서 공식 가이드 (또한 선호되는 방법)를 따르고 원활하게 작동해야합니다.


1
문제는 여러 도메인에 관한 것이 아닙니다.
— Fabian Schmengler

MULTIPLE DOMAINS를 사용한 다중 저장소 설정에 대한 질문입니다 (.org 및 .ch는 다른 도메인 임). 제공된 답변에는 여러 도메인, 하위 도메인 또는 각 매장마다 다른 하위 폴더가 있는지 여부에 관계없이 다중 저장소 설정에 대한 솔루션이 설명되므로 중요하지 않습니다.
— Jernej Golja

1
그러나 상점보기의 경로에 초점이 맞춰졌고 도메인이 문제가 된 것처럼 들리지 않았습니다. 어쨌든, 편집 후 나는 투표를 바꿨다.
— Fabian Schmengler

1
정확히, 문제는 여러 도메인을 사용해야하는 것이 아니라 여러 상점이 동일한 경로 / "하위 폴더"를 공유해야한다는 것입니다. 이는 URL에 상점 코드를 추가하여 불가능합니다.
— Matthias Zeis

-2

먼저 Magento 관리자 패널에서 일부 구성을 수행 한 다음 하위 디렉토리를 생성하고 index.php 및 .htaccess를 하위 디렉토리로 이동하고 index.php를 약간 변경해야합니다.

이 작업을 수행하는 방법에 대한 전체 예는 다음과 같습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.