Dalam pub/index.php
, kode berikut digunakan untuk mengatur perubahan URL untuk media dan aset statis untuk menghilangkan "/ pub":
$params[Bootstrap::INIT_PARAM_FILESYSTEM_DIR_PATHS] = [
DirectoryList::PUB => [DirectoryList::URL_PATH => ''],
DirectoryList::MEDIA => [DirectoryList::URL_PATH => 'media'],
DirectoryList::STATIC_VIEW => [DirectoryList::URL_PATH => 'static'],
DirectoryList::UPLOAD => [DirectoryList::URL_PATH => 'media/upload'],
];
$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $params);
Sayangnya dalam skrip CLI ( bin/magento
) tidak ada yang seperti ini.
Saya menemukan kelas Magento\Setup\Mvc\Bootstrap\InitParamListener
dengan kode berikut:
$initParams = $application->getServiceManager()->get(self::BOOTSTRAP_PARAM);
$directoryList = $this->createDirectoryList($initParams);
Tapi saya tidak mengerti di mana Manajer Layanan Zend ini mengambil data dan bagaimana mungkin untuk memengaruhinya.
Masalah konkret saya adalah bahwa pengindeks harus menghasilkan URL lengkap dan saat ini menyukainya http://magento.local/pub/media/...
, di mana saya membutuhkannyahttp://magento.local/media/...
Bagaimana saya bisa memberi tahu CLI bahwa host virtual saya arahkan ke pub
dan "pub" tidak boleh menjadi bagian dari URL?
Idealnya ini harus bekerja tanpa harus bergantung pada parameter CLI tambahan atau variabel lingkungan.
--magento-init-params=MAGE_DIRS[media][uri]=media
. Ini benar-benar bekerja untuk semua perintah (terbukti dengan melangkah melalui kode), tetapi perintah di luar setup:
namespace salah memberikan kesalahan bahwa opsi tidak ada.