我有如下结构的 URLhttp://domain.com/search.php?query=perks
我希望能够匹配查询“在这种情况下是特权”的首字母,并创建一个像这样的 url
http://domain.com/p/perks
我还希望,如果查询以数字开头,例如查询“1 perk”,它将生成如下 URL。domain.com/1/1+perk
有谁
知道如何实现搜索第一个字符的匹配,以使 URL 结构化为这样?谢谢
答案1
作为mod_rewrite 文档解释道,
如果您希望匹配主机名、端口或查询字符串,请分别使用
RewriteCond
带有%{HTTP_HOST}
、%{SERVER_PORT}
或%{QUERY_STRING}
变量的。
因此,解决方案是:
RewriteCond %{QUERY_STRING} (^|&)query=(([^&])[^&]*)
RewriteRule ^/search.php /%3/%2?
顺便说一句,+
只有当 位于查询字符串中时,它才会解码为空格字符。URL 路径部分中的空格应编码为%20
;+
URL 路径部分中的 a 通常应按字面意思解释。