gpt4 book ai didi

mod-rewrite - 如何关闭 QSA? (查询字符串追加)

转载 作者:行者123 更新时间:2023-12-04 22:37:11 27 4
gpt4 key购买 nike

我正在使用 Apache2 和 mod_rewrite 来隐藏我的查询字符串。这些是有问题的规则。

RewriteCond %{QUERY_STRING}                 ^query=(.*)$
RewriteRule (.*) /search/%1 [R=301,L]

RewriteRule ^search\/?$ /search/?query=test [R=301,L]

当我访问 /search (或 /search/)我被正确重定向到 /search/?query=test (按照最后一条规则)

从那里, RewriteCondRewriteRule应该开始并将我重定向到 /search/test , 对?据我了解 %1在我的第一个 RewriteRule对应于 (.*)RewriteCond其中应该包含 test .

然而,实际发生的是我被重定向到 /search/test/?query=test .因此,该规则有效,但由于某种原因附加了查询字符串。 是否以某种方式/某处自动添加了 QSA 选项?

然后我陷入了重定向到 /search/test?query=test 的无限循环中因为第一个 RewriteCondRewriteRule一次又一次地踢,一次又一次......

我究竟做错了什么?!

谢谢!

最佳答案

您需要指定一个 empty query in the substitution防止将原始请求的查询附加到新 URL:

Modifying the Query String

By default, the query string is passed through unchanged. You can, however, create URLs in the substitution string containing a query string part. Simply use a question mark inside the substitution string to indicate that the following text should be re-injected into the query string. When you want to erase an existing query string, end the substitution string with just a question mark. To combine new and old query strings, use the [QSA] flag.



所以:
RewriteCond %{QUERY_STRING} ^query=(.*)$
RewriteRule (.*) /search/%1? [R=301,L]

关于mod-rewrite - 如何关闭 QSA? (查询字符串追加),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3986868/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com