我花了很多时间试图找到这个问题的解决方案,并尝试了许多不同的方法,但到目前为止,我都没有尝试过任何方法。
我想将一个带有查询字符串的URL重定向到另一个包含该查询字符串的值的URL。
我想重定向:
https://example.com/component/search/?searchword=XXXXXXXXX&searchwordsugg=&option=com_search
至
https://example.com/advanced-search?search=XXXXXXXXX
发布于 2021-09-22 00:40:50
您可以使用根.htaccess文件顶部的mod_rewrite执行类似以下操作:
RewriteEngine On
RewriteCond %{QUERY_STRING} (?:^|&)searchword=([^&]*)
RewriteRule ^component/search/?$ /advanced-search?search=%1 [NE,R=302,L]RewriteRule模式仅与URL-path匹配,这明显排除了查询字符串。为了匹配查询字符串,我们需要一个单独的条件来检查QUERY_STRING服务器变量。
%1是对前面CondPattern中第一个捕获组的反向引用,即。
正则表达式(?:^|&)searchword=([^&]*)匹配查询字符串中的任何位置的searchworld URL参数,而不仅仅是在开头(如您的示例所示)。这还允许URL参数的值为空。
NE标志是必需的,以防止捕获的URL值在响应中被双重编码。(因为QUERY_STRING服务器变量不是%解码的。)
L标志可防止在重写引擎的此过程中进行进一步处理。
参考资料:
https://stackoverflow.com/questions/69257674
复制相似问题