
저는 상당히 열렬한 프로그래머이지만 최근에 웹 개발로 옮겼기 때문에 이 질문이 다소 어리석었다면 사과드립니다.
여러 도메인을 지원해야 하는 전자상거래 웹앱을 구축 중입니다. 내 앱에서 2개의 스토어가 실행되고 있고 각 스토어에는 자체 사용자 정의 도메인이 있다고 가정해 보겠습니다.
앱 위치: www.main-app.com
매장 1 위치: www.store1.com
매장 2 위치:www.store2.com
모든 요청을 상점 ID인 ID 전달 로 store1.com
리디렉션 해야 합니다 . 상점 ID는 각 상점의 모든 구성요소를 로드하는 데 사용됩니다.store2.com
main-app.com
을 가리키는 store1 및 store2에 CNAME 레코드를 추가했습니다 www.main-app.com
. 지금까지는 www.store1.com
브라우저에 입력하면 메인 앱이 화면에 표시되지만 로드할 스토어를 알 수 있도록 스토어 ID를 어떻게 전달할 수 있습니까?
이 기능을 가능하게 하는 가장 좋은 방법은 무엇입니까?
본질적으로 저는 store1을 로드하라는 요청을 입력 www.store1.com
하고 수신하려고 합니다. www.main-app.com
입력과 같은 도메인 전달을 사용하고 싶지 않으며 www.store1.com
사용자를 www.main-app.com?storeId=1
.
나는 나 자신을 분명히하기를 바랍니다.
답변1
웹 브라우저는 다음을 보냅니다.Host
머리글웹 애플리케이션에 대한 각 요청과 함께. 이 헤더에는 사이트에 액세스하는 데 사용되는 도메인이 포함됩니다. 이 헤더를 사용하면 사용자가 액세스하는 데 사용하는 도메인을 기반으로 사이트의 모양과 느낌을 변경할 수 있습니다.
답변2
레코드 수에 관계없이 동일한 서버를 가리킬 수 있으므로 서버는 모든 도메인에서 요청을 받게 됩니다. 일반적으로 이는 하나의 웹 서버를 사용하여 여러 도메인을 호스팅하는 데 사용됩니다. 서버는 요청된 호스트 이름에 대한 헤더에 필드를 추가한 HTTP 1.1 이후 요청이 무엇인지 알고 있습니다.
Apache에서 여러 도메인을 호스팅하는 경우 VirtualHost를 생성하고 일반적으로 각 도메인에 파일 위치에 대한 경로를 제공합니다. 하지만 설명하는 내용에 대해서는 각 저장소에 대한 가상 호스트를 생성하고 모든 루트 폴더를 기본 앱용 파일이 있는 동일한 경로로 설정합니다.
애플리케이션 자체에서는 모든 요청이 해당 요청의 호스트를 알려주는 필드와 함께 포함되므로 ID가 필요하지 않습니다. 이를 통해 상점마다 다른 모든 데이터를 색인화할 수 있습니다. 이 경우 아무것도 리디렉션할 필요가 없습니다.
Apache는 RewriteRule을 사용하여 프로세스를 자동화할 수 있습니다.mod_rewrite설치 및 활성화되었습니다. 요청한 도메인에 따라 다른 매개변수를 사용하여 페이지를 호출하도록 지시합니다. 예를 들어 제안한 대로 모든 요청에 storeId를 추가하고 해당 storeId를 사용하여 논리를 구동하도록 지시할 수 있습니다. 다른 웹 서버에도 비슷한 기능이 있을 수 있습니다. 저는 Apache를 사용하여 제가 가장 잘 아는 기능을 설명하고 있습니다.