【发布时间】:2016-11-25 07:45:32
【问题描述】:
我正在尝试设置一个 Magento 2 站点,该站点将以 http://www.example.com/store/ 作为其主页运行,但 Magento 的路由器将该子目录路径视为前端模块名称,并尝试运行一个名为 store 的模块不存在的。
我的基本 URL 是这样配置的:
mysql> select * from core_config_data where path like '%url';
+-----------+---------+----------+-----------------------+-------------------------------+
| config_id | scope | scope_id | path | value |
+-----------+---------+----------+-----------------------+-------------------------------+
| 2 | default | 0 | web/unsecure/base_url | http://www.example.com/store/ |
| 3 | default | 0 | web/secure/base_url | http://www.example.com/store/ |
+-----------+---------+----------+-----------------------+---------- --------------------+
通过此设置,我更新了 Nginx 配置,将 location 声明更改为在开头包含 /store。完成此操作后,我就可以访问该站点并且静态资源正在正确加载,但是我尝试访问的任何页面都会导致 Magento 的花哨的 404 页面。
由于我知道该请求正在进入 Mageto 应用程序,因此我有一种预感,即 Magento 的路由会导致问题。为了测试,我在/app/code/MyModules/Store/Controllers/Index/Index.php 创建了一个带有简单控制器的新模块,并给它一个frontName 为store 的路由器。激活该模块并重新加载页面后,我得到的不是 404,而是我在自定义控制器中设置的简单 JSON 输出。所以我知道 Magento 正在获取请求,并认为作为其基本 URL 一部分的初始子目录实际上是 frontName 路由。
所以此时我有两个问题:
- 是否可以在这样的子目录中运行 Magento 2 商店,还是我必须求助于使用子域?
- 假设 1 的答案是“是的,有可能”,那么我缺少什么来完成这项工作?我觉得某处必须有一些设置可以解决此问题,但我根本不知道该往哪里看。
【问题讨论】:
-
提醒一下,我的答案尚未经过 NGINX 服务器测试,但根据我的 Magento 经验,它应该仍然有效。
-
我写了一篇关于这个jokiruiz.com/magento-2/how-to-run-magento-2-from-a-subdirectory的帖子,希望对您有所帮助。它只是在 /pub/ 文件夹中创建文件夹,因为一切都在那里。
标签: php magento nginx magento2