Регулярное выражение для замены пробелов в двух условиях с помощью Isapi ReWrite

Я использую Isapi Rewrite для 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

person User970008    schedule 24.07.2012    source источник


Ответы (1)


На днях делал что-то подобное, но была задача попроще с одним типом замены. Попробуйте использовать следующее для базового перенаправления (если это сработает, мы подумаем о более сложном сценарии с несколькими параметрами):

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

Убедитесь, что вы вставили поверх существующей перезаписи.

person Andrew    schedule 25.07.2012
comment
Привет! Это работало для имени NP SP_name, но не работало для NP SP_name name или mn%2098%20765_name%20name%20name. - person User970008; 26.07.2012
comment
Есть ли способ заменить все пробелы в условии? не только первый - person User970008; 02.08.2012