微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用#将页面重定向到网址

如何解决使用#将页面重定向到网址

我想将网址(例如https://www.example.com/de/page-a/重定向到带有#(https://www.example.com/de/page-b/#filter:fields=6)参数的网址。

我找不到使用RewriteRule或Redirect的正确规则。它总是重定向https://www.example.com/de/page-b/,而忽略最后一部分。

有人可以帮我吗?

最诚挚的问候

解决方法

# config/routes.rb

resources :posts do
  get :view,on: :member
end

您正在混淆指令。 mod_alias Redirect ^de/page\-a/$ exemple.com/de/page-b/#filter:fields=51? [L,R=301] 伪指令采用简单的相对于根的URL前缀(以斜杠开头)作为源URL参数。因此,以上内容将永远不会匹配,并且什么也不会发生。带有Redirect指令的[L,R=301] 标志不存在,该指令由mod_rewrite Redirect使用。

例如:

RewriteRule

如果要重定向到相同的方案+主机名,则无需指定绝对URL作为目标。

当重定向到片段标识符(Redirect 301 /de/page-a/ /de/page-b/#filter:fields=51 之后的所有内容)时,您确实需要注意重定向循环,因为 fragid 不会传递回服务器。在这种情况下,您就可以了,因为您将重定向到另一个URL路径。 #page-a。但是您不能从page-b重定向到page-a(相同的URL路径和查询字符串),只能更改 fragid ,因为它会创建重定向循环。为此,您需要使用JavaScript。

NB:首先使用302(临时)重定向进行测试,以避免出现缓存问题。


如果您想使用mod_rewrite(即page-a)来实现这一点-也许如果您已经在使用mod_rewrite-那么您可以改为执行以下操作:

RewriteRule

请注意,RewriteEngine On RewriteRule ^de/page-a/$ /de/page-b/#filter:fields=51 [NE,R=301,L] 模式上没有斜杠前缀。

此处需要使用RewriteRule标志,以防止在响应中将NE进行URL编码并将其视为URL路径的一部分。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。