您好,
我正在尝试使用下面的代码忽略此自定义路由上的特定 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')}
“它没有按预期工作。您是否有处理此问题的经验?”
您好 @Canapin
我正在使用 Discourse 中显示的 Drupal URL 主题的自定义功能。
当用户在网页浏览器中访问 Drupal 站点的旧 URL 时,系统首先在自定义路由中进行检查。它要么忽略自定义路由中提到的某些指定 URL,要么转到“custom_redirect”函数。在“custom_redirect”函数中,它会在 Discourse 中查找主题,并将浏览器重定向到该链接。
pfaffman
(Jay Pfaffman)
6
如果您想将 Drupal URL 301 到正确的 Discourse 主题,那么您需要使用 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’)}
您有什么想法我可能遗漏了什么!!