Правило перезаписи IIRF для IIS7

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

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

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

если я буду использовать следующий URL

HTTP: // локальный / прод / 22 / новый товар-

Мне нужен реальный URL-адрес: http://localhost/prod.php?iid=22

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

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

Спасибо

3 ответа

Решение

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

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

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

лайк

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

   style/style.css

изменить это, чтобы

  /style/style.css

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

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

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-запроса, что я не уверен, что вы хотите сделать.

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

^(prod|pag|staf)/([0-9]+)/([A-Za-z0-9-]+)/?
Другие вопросы по тегам