Заставить Sitecore обрабатывать любые запросы к файлу (.*)

Как можно заставить Sitecore обрабатывать любые запросы к файлам вместо получения 404 от IIS. Причина в том, что мы хотим иметь возможность применять модуль перезаписи URL ( http://github.com/ParTech/Url-Rewriter) для подачи запросов.

Пример: Пользовательские запросы: http://sitecore.domain/randomfolder/file.pdf (который существует)

Но вместо того, чтобы получить IIS "Ошибка HTTP 404.0 - не найдена через StaticFile", мы хотим, чтобы Sitecore принял запрос и применил все правила перезаписи, если они доступны, в противном случае используйте страницу не найденного Sitecore.

Я безуспешно пытался добавить разные обработчики в system.webserver, а также непосредственно изменять сопоставления обработчиков в настройках IIS.

1 ответ

Решение

Я не уверен, стоит ли вам идти туда, потому что тогда все запросы будут проходить через Sitecore, но если вы хотите, вы можете изменить эту конфигурацию:

<preprocessRequest>
  <processor type="Sitecore.Pipelines.PreprocessRequest.FilterUrlExtensions, Sitecore.Kernel">
    <param desc="Allowed extensions (comma separated)">aspx</param>
    <param desc="Blocked extensions (comma separated)">*</param>
    <param desc="Blocked extensions that stream files (comma separated)">css,js</param>
    <param desc="Blocked extensions that do not stream files (comma separated)">*</param>
  </processor>
</preprocessRequest>

Установить допустимые расширения * и установите заблокированные расширения пустыми (не проверено).
Если вы знаете, какие расширения вы собираетесь перенаправить (например, только файлы PDF), определите их только в настройке разрешенных расширений (я бы посоветовал вам сделать это).

<param desc="Allowed extensions (comma separated)">aspx,pdf</param>

Я думаю, что это единственная вещь, необходимая для обработки запроса модулем перезаписи URL.
Имейте в виду, что он не проверен и не поддерживается для файловых запросов, которые будут обрабатываться этим модулем, но теоретически он должен работать.

Другие вопросы по тегам