В связи с вопросом Получение Sitecore 404 для физических файлов мне было поручено удалить префикс тильды в папке мультимедиа (также упоминается в одном из ответов на вопрос). Я получаю 404 при последующем открытии медиатеки, как и в соответствующем вопросе выше. Поэтому я добавил /sitecore/shell/Applications/Media/MediaShop AND /sitecore/shell/Applications/Media/Media Folder.aspx в параметр IgnoreUrlPrefix в файле web.config. Это устраняет проблему, но я не уверен, как это исправлено. проблема и почему удаление тильды в папке мультимедиа вызывает 404 на странице библиотеки мультимедиа. Может кто-нибудь объяснить?
Получение 404 при открытии медиатеки Sitecore
Ответы (1)
Если у вас есть существующий контент, который был создан, когда префикс тильды был на месте, то в этом существующем контенте, в частности, в полях форматированного текста, по-прежнему используется префикс тильды. Вы можете проверить это, посмотрев на Edit HTML
или Raw Values
поля, оно будет в формате:
<img src="-/media/123A4B6789012CAB34C567AB79CBD084.ashx?h=100%25&w=100%25" style="height: 100%; width:100%;">
Чтобы изменить тильду и по-прежнему поддерживать старый контент, вам необходимо дополнить изменения конфигурации мультимедиа, внося исправления в следующие разделы:
<?xml version="1.0"?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<settings>
<!-- Extensions of media files should match it's type -->
<setting name="Media.RequestExtension">
<patch:attribute name="value"></patch:attribute>
</setting>
<!-- Change the media prefix from the default -->
<setting name="Media.MediaLinkPrefix">
<patch:attribute name="value">-/media</patch:attribute>
</setting>
</settings>
<!-- Media handler prefixes -->
<customHandlers>
<handler patch:before="*[@trigger='~/media/']" trigger="-/media/" handler="sitecore_media.ashx" />
</customHandlers>
<!-- Support Media Prefixes -->
<mediaLibrary>
<mediaPrefixes>
<prefix value="-/media"/>
<prefix value="~/media"/>
</mediaPrefixes>
</mediaLibrary>
</sitecore>
</configuration>
Измените префиксы, чтобы они соответствовали тому, что вам нужно.
В любом случае ссылка будет корректно отображаться на сайте переднего плана. Обратите внимание, что вы использовали /media
, что означает, что если есть созданный фрагмент контента с именем media*
, то обработчик мультимедиа попытается обработать его, даже если это контент, например. mysite.com/media/news
или mysite.com/news/latest/media/
. Вы можете добавить некоторую проверку, чтобы предотвратить создание таких элементов.