In pub/index.php
, il seguente codice viene utilizzato per impostare gli URL di modifica per i media e le risorse statiche in modo da omettere "/ 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);
Sfortunatamente negli script CLI ( bin/magento
) non c'è nulla di simile.
Ho trovato la classe Magento\Setup\Mvc\Bootstrap\InitParamListener
con il seguente codice:
$initParams = $application->getServiceManager()->get(self::BOOTSTRAP_PARAM);
$directoryList = $this->createDirectoryList($initParams);
Ma non capisco dove questo Zend Service Manager recuperi i dati e come potrebbe essere possibile influenzarli.
Il mio problema concreto è che un indicizzatore deve generare URL completi e attualmente lo fa http://magento.local/pub/media/...
, dove ne ho bisognohttp://magento.local/media/...
Come posso dire alla CLI che il mio host virtuale punta pub
e "pub" non dovrebbe far parte degli URL?
Idealmente, questo dovrebbe funzionare senza dover fare affidamento su parametri CLI aggiuntivi o variabili di ambiente.
--magento-init-params=MAGE_DIRS[media][uri]=media
. Questo in realtà funziona per tutti i comandi (evidente passando attraverso il codice), ma i comandi al di fuori dello setup:
spazio dei nomi danno erroneamente un errore che l'opzione non esiste.