我想設置一個Magento 2網站,它將以http://www.example.com/store/作爲其主頁運行,但Magento的路由器將該子目錄路徑視爲前端模塊名稱,並嘗試運行不存在稱爲store
的模塊。如何從子目錄運行Magento 2
我的基本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
創建了一個新模塊,並給它一個前綴名爲store
的路由器。一旦我激活該模塊並重新加載頁面,而不是404,我得到了我在自定義控制器中設置的簡單JSON輸出。所以我知道 Magento獲取請求,並認爲是其基本URL的一部分的初始子目錄實際上是一個frontName路由。
所以在這一點上,我有兩個問題:
- 它甚至有可能在這樣的子目錄運行Magento的2店,還是我不得不求助於使用域名?
- 假設對1的答案是「是的,這是可能的」,我錯過了什麼使這項工作?我覺得必須在某個地方設置一些能夠解決這個問題的地方,但我根本不知道該往哪裏看。
只是我的答案沒有經過NGINX服務器測試,但從我的Magento經驗,它應該仍然有效。 – Blizzardengle