Adobe Commerce内部部署:在URL中没有存储代码的多存储设置
在Adobe Commerce中设置具有自定义URL结构(如www.example.com/dk)的新商店视图时,如果未启用全局 将商店代码添加到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