如何解决使用#将页面重定向到网址
我想将网址(例如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 举报,一经查实,本站将立刻删除。