Apache 将页面重定向到带有#
我想将一个url(比方说)重定向到一个参数为#()的url 我没有使用“重写规则”或“重定向”找到正确的规则。它总是重定向到,忽略最后一部分 有人能帮我吗 致意 你把指令弄混了。mod_aliasApache 将页面重定向到带有#,apache,.htaccess,redirect,mod-rewrite,Apache,.htaccess,Redirect,Mod Rewrite,我想将一个url(比方说)重定向到一个参数为#()的url 我没有使用“重写规则”或“重定向”找到正确的规则。它总是重定向到,忽略最后一部分 有人能帮我吗 致意 你把指令弄混了。mod_aliasRedirect指令采用简单的根相对URL前缀(以斜杠开头)作为源URL参数。因此,上述情况永远不会匹配,也不会发生任何事情。mod_rewriteRewriteRule使用的Redirect指令没有[L,R=301]标志 例如: Redirect 301 /de/page-a/ /de/page-b/
Redirect
指令采用简单的根相对URL前缀(以斜杠开头)作为源URL参数。因此,上述情况永远不会匹配,也不会发生任何事情。mod_rewriteRewriteRule
使用的Redirect
指令没有[L,R=301]
标志
例如:
Redirect 301 /de/page-a/ /de/page-b/#filter:fields=51
如果要重定向到相同的scheme+主机名,则无需指定绝对URL作为目标
当重定向到片段标识符(在#
之后的所有内容)时,您确实需要小心重定向循环,因为fragid不会传回服务器。在这种情况下,您可以,因为您正在重定向到不同的URL路径,即page-a
到page-b
。但是您不能从page-a
重定向到page-a
(相同的URL路径和查询字符串),只需更改fragid,因为它将创建重定向循环。为此,您需要使用JavaScript
注意:首先使用302(临时)重定向进行测试,以避免缓存问题
如果您想使用mod_rewrite(即
RewriteRule
)实现此功能-如果您已经在使用mod_rewrite-则可以执行以下操作:
RewriteEngine On
RewriteRule ^de/page-a/$ /de/page-b/#filter:fields=51 [NE,R=301,L]
请注意,RewriteRule
模式上没有斜杠前缀
此处需要使用NE
标志,以防止#
在响应中被URL编码并被视为URL路径的一部分。忽略最后一部分。-它不应“忽略”最后一部分(除非您试图从带有#
的URL重定向)-请显示您已尝试的内容。是否重定向^de/page \-a/$?[L,R=301]
RewriteEngine On
RewriteRule ^de/page-a/$ /de/page-b/#filter:fields=51 [NE,R=301,L]