設定多個網站或商店
您可以將Adobe Commerce設定為擁有多個網站或商店,例如英文商店、法文商店和德文商店。 請參閱瞭解網站、商店和商店檢視。
設定多個存放區的程式取決於您選擇使用唯一或共用網域。
具有唯一網域的多家商店:
https://first.store.com/
https://second.store.com/
具有相同網域的多個商店:
https://store.com/first/
https://store.com/second/
新增網域
自訂網域可以新增到Pro Staging和任何生產環境;它們無法新增到整合環境。
新增網域的程式取決於雲端帳戶的型別:
-
適用於Pro測試與生產
將新網域新增到Fastly,請參閱管理網域,或開啟支援票證以請求協助。 此外,您必須提交Adobe Commerce支援票證,才能要求將新網域新增至叢集。
-
僅供入門級生產使用
新增網域至Fastly,請參閱管理網域,或提交Adobe Commerce支援票證以要求協助。 此外,您必須新增網域至Cloud Console中的 網域 索引標籤:
https://<zone>.magento.cloud/projects/<project-ID>/edit
設定本機安裝
若要設定本機安裝以使用多個商店,請參閱 設定指南 中的多個網站或商店。
成功建立並測試本機安裝以使用多個存放區後,您必須準備整合環境:
Pro環境的設定更新
routes.yaml
檔案中的路由設定和.magento.app.yaml
檔案中的cron設定。 Adobe建議您在整合環境中更新及測試YAML設定檔,然後將變更部署至測試環境。 如果您在重新部署後未將變更套用至測試網站,且記錄檔中沒有相關的錯誤訊息,則您 必須 提交說明嘗試的組態變更的Adobe Commerce支援票證。 在票證中包含任何更新的YAML設定檔案。設定不同網域的路由
路由會定義如何處理傳入的URL。 多個具有唯一網域的存放區需要您定義routes.yaml
檔案中的每個網域。 您設定路由的方式取決於您想要的網站運作方式。
若要在整合環境中設定路由:
-
在本機工作站上,以文字編輯器開啟
.magento/routes.yaml
檔案。 -
定義網域和子網域。
mymagento
上游值與.magento.app.yaml
檔案中的name屬性值相同。code language-yaml "http://{default}/": type: upstream upstream: "mymagento:http" "http://<second-site>.{default}/": type: upstream upstream: "mymagento:http"
-
將變更儲存至
routes.yaml
檔案。 -
繼續設定網站、商店和商店檢視。
設定共用網域的位置
路由設定會定義如何處理URL,.magento.app.yaml
檔案中的web
屬性會定義您的應用程式如何公開至網路。 網頁 位置 允許傳入要求的詳細程度。 例如,如果您的網域是store.com
,您可以針對共用網域的兩個不同存放區之要求,使用/first
(預設網站)和/second
。
若要設定新的網站位置:
-
為根(
/
)建立別名。 在此範例中,第3行的別名為&app
。code language-yaml web: locations: "/": &app # The public directory of the app, relative to its root. root: "pub" passthru: "/index.php" index: - index.php ...
-
為網站(
/website
)建立傳遞,並使用上一步驟中的別名來參照根目錄。別名可讓
website
從根位置存取值。 在此範例中,網站passthru
在第21行上。code language-yaml web: locations: "/": &app # The public directory of the app, relative to its root. root: "pub" passthru: "/index.php" index: - index.php ... "/media": root: "pub/media" ... "/static": root: "pub/static" allow: true scripts: false passthru: "/front-static.php" rules: ^/static/version\d+/(?<resource>.*)$: passthru: "/static/$resource" "/<website>": *app ...
若要使用不同的目錄設定位置:
-
為根(
/
)和靜態(/static
)位置建立別名。code language-yaml web: locations: "/": &root # The public directory of the app, relative to its root. root: "pub" passthru: "/index.php" index: - index.php ... "/static": &static root: "pub/static"
-
在
pub
目錄下建立網站的子目錄:pub/<website>
-
將
pub/index.php
檔案複製到pub/<website>
目錄中並更新bootstrap
路徑(/../../app/bootstrap.php
)。code language-none try { require __DIR__ . '/../../app/bootstrap.php'; } catch (\Exception $e) {
-
為
index.php
檔案建立傳遞。code language-yaml web: locations: "/": &root # The public directory of the app, relative to its root. root: "pub" passthru: "/index.php" index: - index.php ... "/media": root: "pub/media" ... "/static": &static root: "pub/static" allow: true scripts: false passthru: "/front-static.php" rules: ^/static/version\d+/(?<resource>.*)$: passthru: "/static/$resource" "/<website>": <<: *root passthru: "<website>/index.php" "/<website>/static": *static ...
-
提交並推送已變更的檔案。
pub/<website>/index.php
(如果此檔案位於.gitignore
,則推送可能需要強制選項。).magento.app.yaml
設定網站、商店和商店檢視
在 管理UI 中,設定您的Adobe Commerce 網站、商店 和 商店檢視。 請參閱 設定指南 的Admin🔗中的設定多個網站、商店和商店檢視。
當您設定本機安裝時,請務必使用管理員提供的相同名稱和程式碼,代表您的網站、商店和商店檢視。 更新magento-vars.php
檔案時需要這些值。
修改變數
請使用專案根目錄中的magento-vars.php
檔案傳遞MAGE_RUN_CODE
和MAGE_RUN_TYPE
變數,而不設定NGINX虛擬主機。
若要使用magento-vars.php
檔案傳遞變數:
-
在文字編輯器中開啟
magento-vars.php
檔案。預設
magento-vars.php
檔案應該如下所示:code language-php <?php // enable, adjust and copy this code for each store you run // Store #0, default one //if (isHttpHost("example.com")) { // $_SERVER["MAGE_RUN_CODE"] = "default"; // $_SERVER["MAGE_RUN_TYPE"] = "store"; //} function isHttpHost($host) { if (!isset($_SERVER['HTTP_HOST'])) { return false; } return $_SERVER['HTTP_HOST'] === $host; }
-
移動註解的
if
區塊,使其位於function
區塊的 之後 且不再註解。code language-php <?php // enable, adjust and copy this code for each store you run // Store #0, default one function isHttpHost($host) { if (!isset($_SERVER['HTTP_HOST'])) { return false; } return $_SERVER['HTTP_HOST'] === $host; } if (isHttpHost("example.com")) { $_SERVER["MAGE_RUN_CODE"] = "default"; $_SERVER["MAGE_RUN_TYPE"] = "store"; }
-
取代
if (isHttpHost("example.com"))
區塊中的下列值:-
example.com
— 使用您 網站 的基本URL -
default
— 具有您 網站 或 商店檢視 的唯一代碼 -
store
— 使用下列其中一個值:website
— 載入店面中的 網站store
— 在店面中載入 商店檢視
針對使用唯一網域的多個網站:
code language-php <?php function isHttpHost($host) { if (!isset($_SERVER['HTTP_HOST'])) { return false; } return $_SERVER['HTTP_HOST'] === $host; } if (isHttpHost("second.store.com")) { $_SERVER["MAGE_RUN_CODE"] = "<second-site>"; $_SERVER["MAGE_RUN_TYPE"] = "website"; }elseif (isHttpHost("store.com")){ $_SERVER["MAGE_RUN_CODE"] = "base"; $_SERVER["MAGE_RUN_TYPE"] = "website"; }
對於具有相同網域的多個網站,您必須檢查 主機 和 URI:
code language-php <?php function isHttpHost($host) { if (!isset($_SERVER['HTTP_HOST'])) { return false; } return $_SERVER['HTTP_HOST'] === $host; } if (isHttpHost("store.com")) { $code = "base"; $type = "website"; $uri = explode('/', $_SERVER['REQUEST_URI']); if (isset($uri[1]) && $uri[1] == 'second') { $code = '<second-site>'; $type = 'website'; } $_SERVER["MAGE_RUN_CODE"] = $code; $_SERVER["MAGE_RUN_TYPE"] = $type; }
-
-
將變更儲存至
magento-vars.php
檔案。
在整合伺服器上部署和測試
在雲端基礎結構整合環境中將變更推送至您的Adobe Commerce,並測試您的網站。
-
新增、提交程式碼變更並將其推播至遠端分支。
code language-bash git add -A && git commit -m "Implement multiple sites" && git push origin <branch-name>
-
等待部署完成。
-
部署後,在網頁瀏覽器中開啟您的商店URL。
具有唯一網域,請使用格式:
http://<magento-run-code>.<site-URL>
例如,
http://french.master-name-projectID.us.magentosite.cloud/
在共用網域中,使用格式:
http://<site-URL>/<magento-run-code>
例如,
http://master-name-projectID.us.magentosite.cloud/french/
-
徹底測試您的網站,並將程式碼合併至
integration
分支以進行進一步部署。
部署至測試與生產
執行部署至中繼及生產環境的部署程式。 對於入門和Pro環境,您可使用Cloud Console跨環境推送程式碼。
Adobe建議先在中繼環境中進行全面測試,然後再推送至生產環境。 在整合環境中變更程式碼,然後再次開始跨環境部署的程式。