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


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 urldomain.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.