如何使用 .htaccess 将带有查询字符串的 url 重定向到另一个带有查询字符串的 url
How to redirect url with query string to another url with a query string using .htaccess
首先,让我先声明我对 .htaccess 不是很熟练。我确实搜索了 Whosebug 并找到了许多重定向示例,但找不到一个可以完成我想要完成的事情。
我正在尝试将带有查询字符串的特定 URL 重定向到带有查询字符串的不同 URL。查询字符串值是动态的。
例如,我想重定向这个:
https://www.example.com/page/?search=search_string¶m1=whatever¶m2=whatever
为此:
https://www.example.com/?s=search_string
在第一个 URL 中,除了 'search' 值外,我不关心任何参数。第一个 URL 中 'search' 的值将是第二个 URL 中 's' 的值。我想删除所有其他参数。请记住,第一个 URL 中 'search' 的值是动态的。
我尝试了以下但没有成功:
RedirectMatch 301 ^/page/?(.*)$ https://www.example.com/?
您需要在此处使用 mod_rewrite
才能检查和捕获来自 QUERY_STRING
的值。
RewriteEngine On
RewriteCond %{QUERY_STRING} (?:^|&)search=([^&]+) [NC]
RewriteRule ^page/?$ /?s=%1 [L,NC,R=302]
首先,让我先声明我对 .htaccess 不是很熟练。我确实搜索了 Whosebug 并找到了许多重定向示例,但找不到一个可以完成我想要完成的事情。
我正在尝试将带有查询字符串的特定 URL 重定向到带有查询字符串的不同 URL。查询字符串值是动态的。
例如,我想重定向这个:
https://www.example.com/page/?search=search_string¶m1=whatever¶m2=whatever
为此:
https://www.example.com/?s=search_string
在第一个 URL 中,除了 'search' 值外,我不关心任何参数。第一个 URL 中 'search' 的值将是第二个 URL 中 's' 的值。我想删除所有其他参数。请记住,第一个 URL 中 'search' 的值是动态的。
我尝试了以下但没有成功:
RedirectMatch 301 ^/page/?(.*)$ https://www.example.com/?
您需要在此处使用 mod_rewrite
才能检查和捕获来自 QUERY_STRING
的值。
RewriteEngine On
RewriteCond %{QUERY_STRING} (?:^|&)search=([^&]+) [NC]
RewriteRule ^page/?$ /?s=%1 [L,NC,R=302]