在.htaccess中使用多个查询参数重写URL规则

to94eoyn  于 2023-02-19  发布在  其他
关注(0)|答案(1)|浏览(125)

我希望能够动态更改以下URL类型
www.website.com/listings/?q=&rtcl_location=city-state&rtcl_category=category-type
看起来像
www.website.com/city-state/category-type/
我尝试使用[generateit.net/mod-rewrite/](生成它的Mod重写),但它唯一的变化是删除q=%,新的URL看起来像这样:
www.webiste.com/?rtcl_location=city-state&rtcl_category=category-type
这对我来说都是拉丁语,我感谢任何指导。
谢谢
我试着在网上阅读多个答案,并将这些答案翻译到我自己的htaccess上,但到目前为止都失败了。
我也尝试过利用一些在线生成器,如上所述,这并没有给出预期的结果。

flvtvl50

flvtvl501#

听起来很直接,实际上:

RewriteEngine on

# Redirect /listings/?q=&rtcl_location=city-state&rtcl_category=category-type
RewriteCond %{QUERY_STRING} ^(?:^|&)rtcl_location=([^&]+)&rtcl_category=([^&]+)(?:&|$)
RewriteRule ^/?listings/?$ /%1/%2/ [QSD,L,R=301]

# Rewrite /city-state/category-type/
RewriteRule ^/?([^/]+)/([^/]+)/?$ /listings/?rtcl_location=$1&rtcl_category=$2 [L]

这包括两个方面:将请求重定向到“旧”URL和在内部将请求重写到“新”URL。
我删除了“q”查询参数,根据您所写的内容,它没有任何意义。
R=302temporary 重定向开始是个好主意。只有当一切都按预期运行时才将其更改为R=301permanent 重定向。这可以防止测试时出现严重的缓存问题。然而,您应该始终使用一个新的匿名浏览器窗口进行测试,或者清除或禁用您的浏览器缓存。

相关问题