.htaccess 如何将word附加到URL
我有以下网址:.htaccess 如何将word附加到URL,.htaccess,mod-rewrite,url-rewriting,.htaccess,Mod Rewrite,Url Rewriting,我有以下网址: https://example.com/nl/products/stones?color_id=13 我希望它是: https://example.com/nl/products/stones/white-stones 因此,我必须删除GET变量,并将“whitestones”附加到URL 目前我已经尝试过: RewriteCond %{QUERY_STRING} ^color_id=[^&]+&?(.*) [NC] RewriteRule ^ %{REQUE
https://example.com/nl/products/stones?color_id=13
我希望它是:
https://example.com/nl/products/stones/white-stones
因此,我必须删除GET变量,并将“whitestones”附加到URL
目前我已经尝试过:
RewriteCond %{QUERY_STRING} ^color_id=[^&]+&?(.*) [NC]
RewriteRule ^ %{REQUEST_URI}?%1 [R=302,L]
哪个输出:https://example.com/nl/products/stones
但是现在我想在这个结果后面加上“白石头”。
我该怎么做?在我的研究中,我发现QSA应该做到这一点,但我似乎无法让它发挥作用
我有以下网址: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+)从请求中丢弃原始查询字符串
或者,您希望维护更多的查询字符串参数吗?这是否适用于任何URL?您的问题中没有明确提到这一点,但您的指令暗示了这一点。这需要一种稍微不同的方法
在我的研究中,我发现QSA应该做到这一点
QSA
(查询字符串附加)只是将原始请求中的查询字符串附加(即合并)到您在替换中分配的任何查询字符串中。这似乎不是您在这里所需要的。您只想翻译这一个id吗?@eckes是的,确实!%1将匹配Id之后的任何内容,因此RewriteCond^color_id=1(&(.*)重写规则^%{REQUEST_URI}/white stone?%2[R=302,QSA,L]
可能吗?但我承认Apache重写非常痛苦,我不会尝试调试它。您可能会发现nginx更容易。@eckes this返回我:https://example.com/nl/products/stones/white-stone?color_id=13
那么可能没有qsa?