Настройка сайта MSM 5 с общим перенаправлением страницы 404
Так что я работаю над сайтом с 4 поддоменами под основным. У них уже есть лицензия MSM, поэтому я использую ее, чтобы вывести подводные лодки.
Мой вопрос:
Каков наилучший способ обработки перенаправлений 404 для всех сайтов? Я хочу использовать общую страницу 404 для основного сайта и всех поддоменов.
На основном сайте это достаточно просто.
{if no_results OR segment_3!=""}
{redirect="404"}
{/if}
Но разве другие сайты просто не зарегистрировали бы просмотр страниц для таких вещей, как аналитика, если бы я просто добавил:
{if no_results OR segment_3!=""}
{embed="default_site:_includes/404"}
{/if}
Я хотел бы иметь возможность иметь одинаковые результаты на всем сайте и получать все 404 статистики.
Спасибо Брайан
1 ответ
Итак, в итоге я получил следующее:
Я создал группу шаблонов "_include" на каждом сайте. Затем я создал шаблон "404-страница" в каждой из групп шаблонов этих сайтов. (Это было действительно просто для запоминания. Они могут быть в любой группе шаблонов, шаблон конфигурации, который вы хотите)
Каждый из них содержал следующее:
{embed="default_site:_includes/404-Page"}
Затем под каждым сайтом, в разделе: Дизайн => Шаблоны => Глобальные настройки
Я установил для сайта "Включить строгие URL" = "Да" и "Страница 404" = "_includes/404-Page"
Я проверил это в отправленном заголовке, и это вызывает 404 штрафа. Одна из проблем, с которыми я столкнулся, заключалась в том, что он работал на сервере Windows под IIS7. Мне также пришлось отключить ошибки 404 в файле web.config и обработать пользовательский код 404 следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" path="/index.php/_includes/404-Page.html" responseMode="ExecuteURL" />
</httpErrors>
</system.webServer>
</configuration>
Я разместил этот файл web.config в каждой из корневых папок сайта. Поскольку пути назывались одинаково, это была простая вставка / сброс.
Я надеюсь, что это поможет кому-то еще.;)