Adobe Commerce內部部署:在URL中沒有存放區代碼的多重存放區設定
使用自訂URL結構(例如www.example.com/dk)在Adobe Commerce中設定新的存放區檢視時,若未啟用全域 將存放區代碼新增至URL 設定,內容和主題會如預期般顯示,但頁面顯示 404錯誤。 即使NGINX設定了MAGE_RUN_TYPE和MAGE_RUN_CODE指示詞,也會發生這種情況。
若要修正此問題,請設定基底URL、更新NGINX或伺服器設定,並驗證工作階段和路由行為。
說明 description
環境
Adobe Commerce內部部署
問題/症狀
- 儲存區特定內容正確載入,但導致 404錯誤 頁面。
- NGINX已設定為使用
/dk/和MAGE_RUN_TYPE路由MAGE_RUN_CODE的要求,但安裝程式未如預期運作。
解決方法 resolution
若要設定特定存放區檢視的自訂URL結構,而不全域啟用 將存放區代碼新增到URL,請遵循下列步驟:
-
在 商店
>設定>一般>Web 下的管理面板中,設定新商店檢視的基本URL。 例如,使用https://www.example.com/dk/。 -
更新伺服器設定:
-
NGINX: 確定組態將
/dk/路由到正確的存放區檢視:code language-none location = /dk { return 301 /dk/; } location /dk/ { set $MAGE_RUN_TYPE store; set $MAGE_RUN_CODE dk; try_files $uri $uri/ /index.php$is_args$args; }- 替代(所有Web伺服器): 在Magento根目錄中建立
magento-vars.php檔案:
code language-none <?php $uri = explode('/', trim($_SERVER[ 'REQUEST_URI'] , '/')); $code = 'default'; $type = 'website'; // or 'store' if (isset($uri[ 0] ) && $uri[ 0] === 'dk') { $code = 'dk'; $type = 'store'; // usually 'store' for store views, 'website' for websites } $_SERVER[ 'MAGE_RUN_CODE'] = $code; $_SERVER[ 'MAGE_RUN_TYPE'] = $type;將此專案加入為
pub/index.php的第一行:code language-none require __DIR__ . '/../magento-vars.php'; - 替代(所有Web伺服器): 在Magento根目錄中建立
-
-
請確認HTTP回應中的Cookie (例如
PHPSESSID)已正確設定,以確保工作階段資料與存放區一致。 -
檢查可能會干擾路由的其他重寫或重新導向。
-
如果內容載入但顯示 404錯誤:
-
檢閱
var/log中的Magento記錄檔和伺服器記錄檔,找出錯誤或設定錯誤。 -
使用CLI清除快取及重新索引資料:
code language-none bin/magento cache:clean bin/magento indexer:reindex
-
-
在套用這些變更後,測試對丹麥商店檢視中各種頁面的存取權。
3d58f420-19b5-47a0-a122-5c9dab55ec7f