2016-11-11 53 views
1

我想設置一個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路由。

所以在這一點上,我有兩個問題:

  1. 它甚至有可能在這樣的子目錄運行Magento的2店,還是我不得不求助於使用域名?
  2. 假設對1的答案是「是的,這是可能的」,我錯過了什麼使這項工作?我覺得必須在某個地方設置一些能夠解決這個問題的地方,但我根本不知道該往哪裏看。
+0

只是我的答案沒有經過NGINX服務器測試,但從我的Magento經驗,它應該仍然有效。 – Blizzardengle

回答

0

我會建議在Magento Stack Exchange上詢問這個問題,看看如果以下方法無效,你是否能得到更多的幫助。

我的經驗
簡短的回答你的問題是肯定的。 Magento 2可以在子目錄下正常工作。實際上我只是把我們的網站從一個子目錄/商店中取出,然後回去沒有一個。那麼添加一個子目錄並刪除一個是兩個不同的事情,我仍然遇到類似於你所擁有的問題。下面是我做的調試/解決這個問題:

  1. 從儀表板檢查您的配置設置,看看它是否真的是正確的Web /不安全/ BASE_URL和網絡/安全/ BASE_URL拉動,這是下商店>配置> Web。這聽起來像是,但如果不調試並首先解決這個問題。
  2. 通過您的託管終端或通過SSH完全刪除(刪除)var/di目錄和var/view_processed目錄。
  3. 再次通過您的託管終端或通過SSH運行以下命令,假定您位於Magento安裝的根目錄。您可能需要也可能不需要php部分,並且我添加了額外的命令,因爲我不知道您到目前爲止做了什麼。這些都不會損害任何東西。

PHP斌/ Magento的緩存:刷新
PHP斌/ Magento的設置:升級
PHP斌/ Magento的設置:迪:編譯
PHP斌/ Magento的設置:靜態內容:部署
php bin/magento索引器:reindex

您可能需要通過在系統>高速緩存管理下的管理控制面板中手動運行完整頁面高速緩存來執行此操作。之後,請確保在首次檢查網站的前端時點擊F5,以便瀏覽器刷新自己的網站緩存,並且現在應該可以正常運行。

的主要問題
Magento的2做了一些令人驚奇的事情,以改善用戶體驗和加快頁面加載時間。其中一件事就是緩存的改進,正如你所看到的那樣會給開發者帶來很多問題。如果有疑問,只需使用我發佈的命令刷新所有內容,並且通常可以解決很多問題。

更新
對不起剛剛意識到你是問對Magento Stack Exchange。我應該提及的一件事是我沒有只是將index.php和.htaccess文件複製到/ store目錄。在做任何我提到的東西之前,我確實將整個Magento安裝移到了/ store目錄中。然後,當我不再需要/存儲時,我將所有內容都移出來並遵循了我提到的步驟。