htaccess从网址获取参数并重定向

时间:2019-05-12 05:55:23

标签: regex .htaccess redirect regex-group

我想将搜索结果页面重定向到新页面。旧网址如下:

A

我需要它看起来像这样:

/תוצאות_חיפוש:search_keyword

/?s=search_keyword&post_type=product 是用户要查找的内容,表示他要查找的术语。这意味着这不应更改。例如,如果有人搜索“衬衫”,则旧网址将如下所示:

search_keyword

新的外观如下:

/תוצאות_חיפוש:shirts

我已经尝试过在StackOverflow上找到的多种解决方案,但都没有成功。

如何创建此重定向?

2 个答案:

答案 0 :(得分:1)

您必须捕获搜索字符串并在替换URL中使用它

RewriteRule ^תוצאות_חיפוש:(.+)$ /?s=$1&post_type=product [L]

有关详细信息,请参见RewriteRuleApache mod_rewrite Introduction


尽管如此,我从未在.htaccess文件中看到过ASCII以外的任何内容, 我只是在测试环境中进行了检查。即使如此,Apache将此请求记录为

  

172.17.0.1--[12 / May / 2019:14:58:39 +0000]“ GET /%D7%AA%D7%95%D7%A6%D7%90%D7%95%D7%AA_ %D7%97%D7%99%D7%A4%D7%95%D7%A9:衬衫HTTP / 1.1“ 200 268”-“” Mozilla / 5.0(X11; Linux x86_64)AppleWebKit / 537.36(KHTML,例如Gecko) Ubuntu Chromium / 73.0.3683.86 Chrome / 73.0.3683.86 Safari / 537.36“

在mod_rewrite中,RewriteRule接收为已解码的תוצאות_חיפוש:shirts

答案 1 :(得分:0)

尝试使用此:

url_string_name.replace(@"^\/תוצאות_חיפוש:", "/?s=");

这将替换url的开头。然后:

url_string_name.replace(@"$", "&post_type=product");

这将替换网址的结尾; ^表示字符串的开头,$表示字符串的结尾。 祝你好运!