Правило перезаписи IIRF для IIS7 - PullRequest
1 голос
/ 21 января 2010

Я использую IIRF v2.1 для правила перезаписи

я пишу по такому правилу, но оно не работает

RewriteRule ^(prod|pag|staf)/([A-Za-z0-9-]+)/?$ $1.php?iid=$2 [QSA,L]

если я использую следующий URL

http://localhost/prod/22/new-item

Мне нужен фактический URL http://localhost/prod.php?iid=22

да рабочая версия

RewriteRule / ^ (прод | pag | staf) / ([A-Za-z0-9 -] +) /? $ /$1.php?iid=$2 [QSA, L] но проблема здесь в том, что все стили и включаемые файлы не включены.

Спасибо

Ответы [ 3 ]

1 голос
/ 21 января 2010

Ваше регулярное выражение не позволяет новому элементу следовать за последним слешем.

RewriteRule ^(prod|pag|staf)/([A-Za-z0-9-]+)/?$ $1.php?iid=$2 [QSA,L]

Последовательность /? $, Которая заканчивается шаблоном, говорит ... косая черта (возможно), а затем конец строки. Ваш URL, однако, не заканчивается косой чертой. Он заканчивается косой чертой и текстом «new-item».

Регулярное выражение, фиксирующее , что будет выглядеть примерно так:

RewriteRule ^(prod|pag|staf)/([A-Za-z0-9-]+)/? $1.php?iid=$2 [QSA,L]

... в котором говорится, что вам все равно, что будет после необязательного слэша, и поскольку вы используете QSA, любая строка запроса в исходном URL-адресе добавляется к исходящему URL-адресу.

Но это в основном отбросило бы часть «нового элемента» во входящем URL-запросе, что я не уверен, что вы хотите сделать.

1 голос
/ 21 января 2010

просто напишите URL, как это

RewriteRule ^ / (прод | pag | staf) / ([A-Za-z0-9 -] +) /? $ /$1.php?iid=$2 [QSA, L]

и поставьте / перед вашими таблицами стилей и другими элементами

как

если ваша старая таблица стилей включает в себя вот так

   style/style.css

изменить его на

  /style/style.css

то же самое для изображения и ссылок. надеюсь, что это будет работать нормально.

0 голосов
/ 21 января 2010

Если ваши URL-адреса всегда будут содержать цифры, то слаг, это регулярное выражение получит каждую часть:

^(prod|pag|staf)/([0-9]+)/([A-Za-z0-9-]+)/?
...