Regex 将url重写为搜索查询

Regex 将url重写为搜索查询,regex,.htaccess,mod-rewrite,Regex,.htaccess,Mod Rewrite,我最近改变了域名,新网站有一个不同的永久链接结构。我希望设置.htaccess以将旧URL重写为查询字符串,这样就可以找到请求的页面,而不必将其键入新站点的搜索中,而不是将所有内容从旧站点重定向到新站点 例如: www.oldsite.com/projects/2010/foo-bar-foobar应重定向至www.newsite.com/?s=foo+bar+foobar 旧的permalink结构总是以一年(4位数字)开始,新的结构完全不同,所以我认为重定向到搜索查询是最好的选择 我试着了解

我最近改变了域名,新网站有一个不同的永久链接结构。我希望设置.htaccess以将旧URL重写为查询字符串,这样就可以找到请求的页面,而不必将其键入新站点的搜索中,而不是将所有内容从旧站点重定向到新站点

例如:

www.oldsite.com/projects/2010/foo-bar-foobar应重定向至www.newsite.com/?s=foo+bar+foobar

旧的permalink结构总是以一年(4位数字)开始,新的结构完全不同,所以我认为重定向到搜索查询是最好的选择

我试着了解正则表达式,但我就是无法找到一个有效的解决方案

我希望有人能给我指出正确的方向


谢谢

我第一次总是把这些搞砸,但你可以试试(在www.oldsite.com上的.htaccess中):


在英语中,这与旧站点上的URL相匹配,该URL以可选斜杠开始,后跟单词“projects”,然后是另一个斜杠,然后是一个或多个数字,然后是斜杠,然后是任意数量的字符。它重定向到新闻站点,将最后一组“任意数量的字符”作为查询字符串传递。最后一个“R”告诉重写引擎向用户代理发出重定向。

谢谢。这对我来说很有意义。但是,搜索查询使用+符号,不使用连字符。有没有办法将连字符替换为+符号?如果变量数量有限,这可能是可行的:.*(-).*(-)。但是如果有双循环变量会更好:((.*)-?)+如果有可能从中获取子变量,则可以这样做,但是我觉得这变得如此复杂,以至于编写一些php来处理连字符转换变得更加容易。。。
RewriteRule ^/?projects/[0-9]+/(.*)$ http://www.newsite.com/?s=$1 [R]