我试图设置一个以http://www.example.com/store/作为主页运行的Magento 2站点,但Magento的路由器将该子目录路径视为前端模块名称,并尝试运行一个名为store
的模块并不存在。
我的基本网址配置如下:
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
创建了一个带有简单控制器的新模块,并为它指定了一个前缀为store
的路由器。一旦我激活了该模块并重新加载了页面,而不是404,我得到了我在自定义控制器中设置的简单JSON输出。所以我知道 Magento正在获取请求,并认为作为其基本URL一部分的初始子目录实际上是一个frontName路由。
所以在这一点上我有两个问题:
答案 0 :(得分:0)
我建议在Magento Stack Exchange上询问此问题,看看如果以下内容无效,您是否可以获得更多帮助。
我的经历
对你的问题的简短回答是肯定的。 Magento 2适用于子目录。我实际上只是将我们的网站从子目录/商店中拉出来然后又回到没有一个。添加一个子目录并删除一个是两个不同的东西我仍然遇到类似于你所拥有的问题。以下是我为调试/解决问题所做的工作:
php bin / magento cache:flush
php bin / magento setup:升级
php bin / magento setup:di:编译
php bin / magento setup:static-content:deploy
php bin / magento indexer:reindex
您可能需要通过在系统>下的管理信息中心中手动运行整页缓存来执行此操作。缓存管理。之后确保在第一次检查网站前端时点击F5,这样浏览器就会刷新自己的网站缓存,一切都应该正常工作。
主要问题
Magento 2做了一些惊人的事情来改善用户体验并加快页面加载时间。其中一个问题是缓存的改进,正如您所看到的那样,可能会给开发人员带来很多问题。如果有疑问,只需使用我发布的命令刷新所有内容,它通常可以解决很多问题。
<强>更新强>
对不起刚刚意识到你确实在Magento Stack Exchange上询问了。我应该提到的一件事是我没有只是将index.php和.htaccess文件复制到/ store目录。在完成我提到的任何内容之前,我实际上将整个Magento安装移动到/ store目录中。然后,当我不再需要/存储时,我把所有东西都移出去,按照我提到的步骤。