При развертывании на тестовом сервере я не могу получить доступ к чему-либо в общей папке. Я получаю ошибку Symfony Route. Как будто он не распознает общую папку. Все страницы проходят правильно. Моя среда разработки выглядит следующим образом: c: \ inetpub \ wwroot \ userdir \ symfony-test
Что переводится как этот URL. https://servername/userdir/symfony-test/test
Попытка вытащить тестовое изображение ниже или файлы css или js в ветке, я получаю ошибку 404
<img src="{{ asset('build/images/test.jpg') }}" alt="test">
Видя, что он не получает полный путь, я изменил framwork.yaml, чтобы установить base_urls, который дает полный путь, и установил json manifest_path. Хотя путь манифеста правильный, и я вижу, что он дает полный путь при использовании base_urls, я все равно получаю 404 за все, что находится в общей папке.
assets:
json_manifest_path: '%kernel.project_dir%/public/build/manifest.json'
base_urls:
- 'https://servername/userdir/symfony-test/public/'
Выполнение вышеизложенного привело к
GET https://servername/userdir/symfony-test/build/images/test.93d146a7.jpg 404 (Not Found)
Я также обновил файл composer.json, как показано ниже, чтобы добавить public-dir в раздел «extra», следуя инструкциям по ссылке здесь. https://symfony.com/doc/current/configuration/override_dir_structure.html
"extra": {
"symfony": {
"allow-contrib": false,
"require": "4.2.*",
"public-dir": "userdir/symfony-test/public/"
}
Файлы скомпилированы с использованием Encore Webpack и работают как положено.
Encore
// directory where compiled assets will be stored
.setOutputPath('public/build/')
.enableVersioning()
// public path used by the web server to access the output path
.setPublicPath('/build')
.addEntry('app', './assets/js/app.js')
.addEntry('test','./assets/images/test.jpg')
Это тоже может быть полезной информацией.
Вот правило в файле /public/web.config.
<rule name="Imported Rule 1" stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php" appendQueryString="true" />
</rule>
Правило в symfony-test / web.config
<rewrite>
<rules>
<rule name="Symfony4" stopProcessing="true">
<match url="(.*)" ignoreCase="false" />
<action type="Rewrite" url="public/" appendQueryString="true" />
</rule>
</rules>
</rewrite>
Запуск Symfony 4 в IIS Windows Server 2012 R2.
Php 7.2.13,
Композитор версия 1.6.5,
версия узла 8.11.4,
пряжа 1.9.4
Как получить общедоступную папку для распознавания и не считать маршрут или получить 404.