首先我要声明,我并不是 .htaccess 或 Apache 专家。但我需要在 URL 查询的末尾附加一个散列项。
例如:
变成
我正在使用以下规则(整个 .htaccess 文件):
RewriteCond %{QUERY_STRING} ppw_confirm=(.*)
RewriteRule ^/?(.*) http://www.example.com/?ppw_confirm=%1#go [NE,L]
问题
在参数字符串末尾添加 #go 后,.htaccess 文件仍会读取 ?ppw_confirm= 查询。然后,它会尝试执行第二次重定向,随后进入无限循环。
我搜索了好几个小时,但毫无收获。基本上,我需要一种方法来防止 .htaccess 重写两次,从而防止这种无限循环。
欢迎任何及所有的建议:)
非常感谢您的帮助。提前致谢!
答案1
您根本无法在重写规则中使用这个#go
部分;它是客户端的,在请求该资源时不会发送到服务器,因此您无法根据它在规则中做出决策。
也许作为重定向的一部分,向查询字符串添加一个附加变量,然后查找该变量并在存在时阻止重定向?
RewriteCond %{QUERY_STRING} ppw_confirm=(.*)
RewriteCond %{QUERY_STRING} !r=1
RewriteRule ^/?(.*) http://www.example.com/?ppw_confirm=%1&r=1#go [NE,L]