Получение 404 при открытии медиатеки Sitecore

В связи с вопросом Получение Sitecore 404 для физических файлов мне было поручено удалить префикс тильды в папке мультимедиа (также упоминается в одном из ответов на вопрос). Я получаю 404 при последующем открытии медиатеки, как и в соответствующем вопросе выше. Поэтому я добавил /sitecore/shell/Applications/Media/MediaShop AND /sitecore/shell/Applications/Media/Media Folder.aspx в параметр IgnoreUrlPrefix в файле web.config. Это устраняет проблему, но я не уверен, как это исправлено. проблема и почему удаление тильды в папке мультимедиа вызывает 404 на странице библиотеки мультимедиа. Может кто-нибудь объяснить?


person Adi Kurniawan    schedule 17.05.2016    source источник
comment
Вот как Sitecore описывает kb.sitecore.net/articles/723979.   -  person Jan Bluemink    schedule 17.05.2016
comment
Вы получаете сообщение об ошибке на серверной CMS в редакторе или только на внешнем CD-сайте?   -  person jammykam    schedule 17.05.2016


Ответы (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/. Вы можете добавить некоторую проверку, чтобы предотвратить создание таких элементов.

person jammykam    schedule 17.05.2016
comment
Последняя часть вашего ответа имеет смысл. Я понял, что папка mediashop находится внутри папки media, поэтому она будет обрабатываться как элемент мультимедиа, а не контент. - person Adi Kurniawan; 18.05.2016