如何从子目录运行Magento 2

时间:2016-11-11 21:01:46

标签: php magento nginx magento2

我试图设置一个以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路由。

所以在这一点上我有两个问题:

  1. 甚至可以在像这样的子目录中运行Magento 2商店,还是必须使用子域?
  2. 假设1的答案是"是的,有可能",我错过了什么让这项工作?我觉得必须有一些设置可以解决这个问题,但我根本不知道在哪里看。

1 个答案:

答案 0 :(得分:0)

我建议在Magento Stack Exchange上询问此问题,看看如果以下内容无效,您是否可以获得更多帮助。

我的经历
对你的问题的简短回答是肯定的。 Magento 2适用于子目录。我实际上只是将我们的网站从子目录/商店中拉出来然后又回到没有一个。添加一个子目录并删除一个是两个不同的东西我仍然遇到类似于你所拥有的问题。以下是我为调试/解决问题所做的工作:

  1. 从信息中心检查您的配置设置,看看它是否真正吸引了正确的web / unsecure / base_url和web / secure / base_url,这是在Stores>下。配置>网页。这听起来像是,但如果不是调试并首先修复它。
  2. 通过您的托管终端或通过SSH完全删除(删除)var / di目录和var / view_processed目录。
  3. 再次通过您的主机终端或通过SSH运行以下命令,假设您位于Magento安装的根目录下。您可能需要也可能不需要php部分,我确实添加了额外的命令,因为我不知道到目前为止你做了什么。这些都不会伤害任何东西。
  4.   

    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目录中。然后,当我不再需要/存储时,我把所有东西都移出去,按照我提到的步骤。