2011-02-15 4 views
0

Я использую isapi_rewrite для Windows, но хочу перейти к linux/apache и столкнулся с проблемой преобразования моего существующего правила. Я после следующего URL Rewrite:Перемещение из isapi_rewrite (win) в проблему mod_rewrite (linux)

посетителей/поставляется образец URL: * .php/param1/значение1/param2/значение/2/param3/value3/paramx/valuex

Подобранная к: независимо ? .php value1 = param1 & param2 = значение2 & param3 = value3 & paramx = valuex

Я был ранее с помощью этого правила в ISAPI_Rewrite:

RewriteEngine on 
RewriteRule ^(.*?\.php)/([^/]*)/([^/]*)(/.+)? $1$4?$2=$3 [NC,LP,QSA] 

Но LP (Loop) не является флагом apache mod_rewrite, и я не могу решить, как заменить это правило подходящим в mod_rewrite.

Главное, что количество параметров/значений неизвестно, поэтому необходимо заменить все?, & и = с/с. Я ценю, что смогу сделать шаблон более чистым, удалив параметры и имя файла, но то, что я действительно хочу сделать, - это переместить приложение в linux и работать, прежде чем вносить изменения в ссылки на ссылки на приложения.

Благодаря hopingly ...

ответ

1

Вы можете использовать флаг 'рядом | N' в цикле процесс перезаписи. См. the mod_rewrite docs at apache.org.

+0

Спасибо, я заметил этот флаг и подумал, что он похож на тот, который мне нужен: RewriteRule^(. *? \. Php)/([^ /] *)/([^ /] *) (/ . +)? $ 1 $ 4? $ ​​2 = $ 3 [NC, N, QSA] не работает для URL-адреса, например: articles.php/title/pipeline - they-come-running/id/3440 – AlanG