Здравствуйте,
Возможно ли автоматически перенаправлять все страницы с ошибкой 404 на главную или на другую страницу?
С уважением
Здравствуйте,
Возможно ли автоматически перенаправлять все страницы с ошибкой 404 на главную или на другую страницу?
С уважением
Так как Discourse не использует htaccess, я не уверен, где искать решение. Любая помощь будет оценена ![]()
Наверное, вы могли бы создать плагин для этого?
Может быть, будет запутанно перенаправлять сразу, так почему бы не изменить маршрут 404 на перенаправление на главную страницу после короткого таймера с соответствующим сообщением?
Это могло бы сработать, но я не знаю, как это сделать ![]()
Есть ли для этого какой-то плагин?
Сомневаюсь. Вы могли бы Marketplace
.htaccess в любом случае использовать не стоит, даже если перед Discourse стоит Apache2 — а его там нет.
Docker немного усложняет жизнь
и я не знаю, как с этим работать. Но если хотите, вы можете поставить Nginx (или любой другой сервер/прокси-обратный прокси) перед Discourse. Тогда такая перенаправление будет довольно простой задачей. Вы можете сделать что-то вроде этого:
Но зачем вообще перенаправлять 404 на главную страницу? Если пользователь ищет что-то и вместо нужной страницы или 404 получает главную, это немного сбивает с толку. После этого тот же пользователь попробует снова, возможно, потому что он что-то сделал неправильно или на сайте возникла проблема. Это совершенно излишне, и есть причина, по которой каждый сайт должен показывать ошибку 404, а не какое-то странное перенаправление.
Я переезжаю с WordPress на Discourse. Из-за другой структуры ссылок после миграции появится огромное количество страниц 404. Я не могу настроить перенаправление для каждой из них вручную, поэтому мне нужно автоматическое решение.
Да, но это не решение. Это плохой фикс, и не более. Структура ваших URL всё равно останется сломанной, вы просто её скрываете. И нет, передать SEO-ценность таким образом нельзя ![]()
В любом случае — у вас там есть сервер. Попробуйте его использовать?
Если бы вы использовали разные поддомены для сайтов WordPress и Discourse, вы, вероятно, смогли бы настроить это на стороне сервера WordPress.
Возможно изменить page_not_found.title (изначально «Упс! Эта страница не существует или является приватной»). Жаль, что у вас нет чего-то вроде page_not_found.content, которое позволило бы подробно объяснить ситуацию.
Этот вариант не предполагает никакого перенаправления, если я не ошибаюсь.
К чему ведут эти ссылки? Планируется ли их миграция в Discourse? Например, если эти ссылки ведут на записи блога, которые вы преобразуете в темы, вы можете создать постоянные ссылки (пермалинки): Redirect old forum URLs to new Discourse URLs using permalinks
Вы также можете переназначить эти URL-адреса на что-то другое. Предполагая, что URL-адреса имеют общий формат, вы можете использовать REGEX и команду remap для их замены:
remap [--global,--regex] FROM TO
Пример использования команды:
discourse remap --regex "\[\/?color(=[^\]]*)*]" "" # удаление тегов цвета bbcode
За исключением того, что это должно быть сделано на сервере WordPress, если вы хотите, чтобы были довольны и Google, и пользователи.
Вы можете перенаправлять все битые страницы 404 на главную страницу или другую страницу, используя функцию «Настройка».
Перейдите в раздел Настройка > Темы > Создать новую тему > назовите вашу тему, например, Перенаправление 404, и установите Базовую тему в По умолчанию.
Затем создайте новую тему > Изменить CSS/HTML. В разделе HTML создайте фрагмент JavaScript, который будет обрабатывать перенаправление.
Вставьте этот код.
<script type="text/discourse-plugin">
api.onPageChange((url, title) => {
// Перенаправление на главную страницу для всех страниц 404
if (url.includes('/404')) {
window.location.href = '/';
}
});
</script>
Пожалуйста, измените имя страницы в соответствии с вашими потребностями. Прочитайте это перенаправление старого URL на новый URL Discourse