使用Isapi ReWrite在两种条件下替换空格的正则表达式

时间:2012-07-24 19:19:09

标签: regex isapi isapi-rewrite

我正在使用Isapi Rewrite for IIS,我想为动态产品页面制作SEO友好的URL。

我需要在两个查询字符串参数中以不同方式替换空格。

在第一个参数中,\ s应替换为+ 在第二个中,所有\ s应该替换为 -

#seo. 2 conditions. split on _ delimiter.
RewriteRule ^Store/([^_]+)_([^/]+) Store/Details.aspx?id=$1&name=$2  [QSA,NC]

#replace spaces with + in first condition (doesn't work)
#RewriteRule ^Store/([^\w\s]+)\s(.+)$ Store/Details.aspx?id=$1+$2  [QSA, NC]

#replace spaces with dash in second condition ???

实施例

Store/NP SP_name name
//$1: NP+SP
//$2: name-name
// output: Store/NP+SP_name-name

Store/mn%2098%20765_name%20name%20name
//$1: mn+98+765
//$2: name-name-name
//output: Store/mn+98+765_name-name-name

1 个答案:

答案 0 :(得分:0)

前几天我已经完成了这样的事情,但是只有一种替代方式,这是一项简单的任务。尝试使用以下内容进行基本重定向(如果有效,我们会考虑更复杂的多参数方案):

RewriteRule ^Store/(.+)\s([^_]+)_(.+)\s(.+) /Store/$1+$2_$3-$4  [NC,R=301,L]

确保放在现有的重写之上。