将查询字符串重写为另一个查询字符串
Rewriting query string to another query string
我需要像这样搜索 url 传递到我网站的搜索:
/index.php?keyword=47174&Search=Search&Itemid=1&option=com_virtuemart&page=shop.browse
并将它们更改为:
/catalogsearch/result/?q=47174
我需要取 "keyword=" 之后的值,忽略 & 符号之后的所有内容,并将其交给 ?q=
之后的第二个 url
这是我到目前为止想出的:
RewriteCond %{QUERY_STRING} ^keyword=([a-z][0-9a-z_]+)$
RewriteRule ^index\.php$ /catalogsearch/result/ [L]
然而,这也会在 url 的末尾打印 keyword=,不会打印 q= 或清理 &
之后的所有内容
我该如何解决这个问题?
您将希望您的 RewriteRule 类似于:
RewriteRule keyword=([0-9a-zA-Z_]+) /catalogsearch/result/?q=%1 [L]
括号内的所有内容将替换右侧的 %1
。
您可以使用以下内容:
RewriteRule ^index\.php$ /catalogsearch/result/?q= [L]
^^^^^
其中
是对捕获的组 1 的反向引用(此处..关键字的值)
试试这个:
RewriteCond %{QUERY_STRING} ^keyword=([^&]+) [NC]
RewriteRule ^index\.php$ /catalogsearch/result/?q=%1 [NC,L,R]
我需要像这样搜索 url 传递到我网站的搜索:
/index.php?keyword=47174&Search=Search&Itemid=1&option=com_virtuemart&page=shop.browse
并将它们更改为:
/catalogsearch/result/?q=47174
我需要取 "keyword=" 之后的值,忽略 & 符号之后的所有内容,并将其交给 ?q=
之后的第二个 url这是我到目前为止想出的:
RewriteCond %{QUERY_STRING} ^keyword=([a-z][0-9a-z_]+)$
RewriteRule ^index\.php$ /catalogsearch/result/ [L]
然而,这也会在 url 的末尾打印 keyword=,不会打印 q= 或清理 &
之后的所有内容我该如何解决这个问题?
您将希望您的 RewriteRule 类似于:
RewriteRule keyword=([0-9a-zA-Z_]+) /catalogsearch/result/?q=%1 [L]
括号内的所有内容将替换右侧的 %1
。
您可以使用以下内容:
RewriteRule ^index\.php$ /catalogsearch/result/?q= [L]
^^^^^
其中 是对捕获的组 1 的反向引用(此处..关键字的值)
试试这个:
RewriteCond %{QUERY_STRING} ^keyword=([^&]+) [NC]
RewriteRule ^index\.php$ /catalogsearch/result/?q=%1 [NC,L,R]