我有以下网址:
https://example.com/nl/products/stones?color_id=13
我希望它是
https://example.com/nl/products/stones/white-stones
因此,我必须删除GET变量,并将“ white-stones”附加到URL。
目前我已经尝试过:
RewriteCond %{QUERY_STRING} ^color_id=[^&]+&?(.*) [NC]
RewriteRule ^ %{REQUEST_URI}?%1 [R=302,L]
输出为:https://example.com/nl/products/stones
但是现在我要在此结果后附加“白石”。 我怎样才能做到这一点?在我的研究中,我发现QSA应该这样做,但是我似乎无法使其工作。
答案 0 :(得分:1)
我有以下网址:
https://example.com/nl/products/stones?color_id=13
我希望它是:https://example.com/nl/products/stones/white-stones
如果只是这个特定的ID / URL,那么您大概需要在指令中检查这个特定的ID和URL?这也大大简化了要求。
例如:
RewriteCond %{QUERY_STRING} ^color_id=13$
RewriteRule ^nl/products/stones$ %{REQUEST_URI}/white-stones [QSD,R=302,L]
QSD
标志(Apache 2.4+)从请求中丢弃原始查询字符串。
或者,您是否希望保留更多查询字符串参数?这可以应用于任何网址吗?您的问题中没有明确提及,但是您的指令对此有所提示。这将需要稍微不同的方法。
在我的研究中,我发现QSA应该这样做
QSA
(附加查询字符串)只是将原始请求中的查询字符串附加(即,合并)与您要在替代中分配的任何查询字符串相加。这似乎不是您所需要的。