Наиболее распространенные случаи, когда не найденная страница правильно возвращает ошибку 404 в DNN, перечислены ниже:
- Это страница корневого уровня, которая не существует https://example.com/not-found
- Страница существует, но в настоящее время она удалена, отключена или защищена разрешениями (и / или у вас нет соответствующих разрешений)
Существуют и другие выбранные экземпляры, ноэто суть этого.Это из-за динамической природы DNN.Когда модуль добавляется на страницу, DNN не знает, создает ли этот модуль свои собственные URL-адреса динамически или нет.
Примеры этого включают модули блога и новостей.Нетехнический редактор контента должен иметь возможность создавать новое сообщение в блоге или новость и иметь собственный уникальный URL-адрес.
Примеры:
Глядя наВ приведенных выше примерах DNN не может безопасно перенаправлять как ошибку HTTP 404, поскольку страницы действительно существуют, но только как URL-адреса, которые затем динамически используются для загрузки пользовательских данных из модуля на странице.
Решениедля этого можно было бы создать своего собственного провайдера URL-адресов, который можно было бы основать на том, который находится в ядре DNN.
Другим решением будет обеспечение установки автономных страниц (без динамических модулей).чтобы указать канонический URL.Вы можете сделать это в соответствующих настройках страницы.
Более подробную информацию о поставщике URL на момент выпуска можно найти в сообщении блога ниже.
https://www.dnnsoftware.com/community-blog/cid/154518/page-not-found-404-error-handling-in-dnn
Вкл.примечание: многие функции провайдера URL не имеют пользовательского интерфейса для управления ими.Вы можете увидеть настройки провайдера URL, выполнив следующие запросы, чтобы увидеть, что это за настройки.
-- the highest-level settings
SELECT * FROM [dbo].[HostSettings] WHERE [SettingName] LIKE '%aum_%' ORDER BY [SettingName];
-- setttings for each website, overriding the host-level settings
SELECT * FROM [dbo].[PortalSettings] WHERE [SettingName] LIKE '%aum_%' ORDER BY [PortalId], [SettingName];