如何替换查询字符串中的第一个参数?

时间:2019-03-31 03:37:10

标签: regex wordpress .htaccess

我正在尝试将此查询“ https://myurl.com/puff/?search_keyword=xyz”更改为该“ https://myurl.com/puff/?s=xyz”。

我看到了与此类似的答案,但是我之前从未使用过正则表达式,并且在根据我的需要对其进行自定义时遇到了问题。我正在使用WordPress并编辑.htaccess文件以实现此目的。

我调查了How to replace the first parameter name in query string using .htaccess?并尝试使用它来自定义自己的.htaccess,但是在自己实现它方面遇到了问题。

这是我当前的.htaccess文件的样子:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /puffadvisor/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /puffadvisor/index.php [L]x
</IfModule>

# END WordPress

非常感谢所有帮助:)非常感谢。

1 个答案:

答案 0 :(得分:1)

您需要基于%QUERY_STRING的条件,然后引用以%为前缀的捕获组

RewriteEngine On
RewriteCond %{QUERY_STRING} (.*(?:^|&))seach_keyword((?:$|=|&).*)
RewriteRule /puff /puff?%1s%2

{DOCUMENT_ROOT}/.htaccesssearch_keyword位置上将参数名称s替换为/puff,无论参数出现在什么位置。

您可能要重写所有路径

RewriteRule .* $0?%1s%2