首页 > 解决方案 > 如何将单词附加到 URL

问题描述

我有以下网址:

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 应该这样做,但我似乎无法让它发挥作用。

标签: .htaccessmod-rewriteurl-rewriting

解决方案


我有以下网址: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 应该这样做

(Query String Append) 只是将原始请求中的查询字符串附加(即合并)与您在替换中分配的QSA任何查询字符串。这似乎不是您在这里所需要的。


推荐阅读