Настройка кастомного маршрута для игнорирования нескольких URL в Discourse

Здравствуйте,

Я пытаюсь игнорировать конкретные URL-адреса на этом пользовательском маршруте, используя код ниже.
(файлы routes.rb)

get '/*path' => 'static#custom_redirect', constraints: lambda { |request| !request.path.include?('/preferences/' ) || !request.path.include?('/custom_sso_login/') || !request.path.include?('/t/' ) || !request.path.include?('/admin/') || !request.path.include?('/singup') || !request.path.include?('/login')}

«Это не работает так, как ожидалось. У вас есть опыт решения этой проблемы?»

Привет :slight_smile:

Каков контекст того, чего вы пытаетесь достичь?

Привет, @Canapin

Я использую кастомную функциональность для темы URL в Drupal, описанной на сайте Discourse.

Когда пользователь посещает старый URL сайта Drupal в браузере, система сначала проверяет кастомные маршруты. Она либо игнорирует определённые указанные URL, как описано в кастомных маршрутах, либо переходит к функции ‘custom_redirect’. В функции ‘custom_redirect’ она находит тему в Discourse и перенаправляет браузер по этой ссылке.

Если вы пытаетесь настроить перенаправление URL-адресов Drupal на соответствующие темы Discourse с помощью кода ответа 301, вам следует использовать «перенаправления постоянных ссылок» (permalink redirects) и, вероятно, «нормализацию постоянных ссылок» (permalink normalizations).

Если вы использовали скрипт импорта, он должен был создать постоянные ссылки, которые можно просмотреть по адресу /admin/customize/permalinks. Если они не работают, вы можете использовать нормализацию постоянных ссылок, чтобы исправить их.

@pfaffman
Я не использую постоянные ссылки в Discourse.

Мой код работает для перенаправления URL-адресов постов со старого сайта на темы или посты в Discourse.

Однако с этим кодом блокируются некоторые URL-адреса, такие как вход, регистрация и другие формы.

get ‘/*path’ => ‘static#custom_redirect’, constraints: lambda { |request| !request.path.include?(‘/preferences/’ ) || !request.path.include?(‘/custom_sso_login/’) || !request.path.include?(‘/t/’ ) || !request.path.include?(‘/admin/’) || !request.path.include?(‘/singup’) || !request.path.include?(‘/login’)}

У вас есть идея, что я упускаю?!