IIS RewriteBase для .htaccess - PullRequest
       3

IIS RewriteBase для .htaccess

1 голос
/ 09 марта 2020

В IIS RewriteBase не работает. Таким образом, приведенное ниже правило .htaccess было преобразовано в веб-конфигурацию IIS. Но в IIS выдает ошибку 400 Bad Request. Что мне нужно исправить?

Правило Htaccess

RewriteRule api/(.*)$ api.php?request=$1 [QSA,NC,L]

Преобразованное правило IIS

<rule name="Imported Rule 1" stopProcessing="true">
    <match url="api/(.*)$"/>
    <action type="Rewrite" url="api.php?request={R:1}" appendQueryString="true"/>
</rule> 

1 Ответ

0 голосов
/ 12 марта 2020

Предполагается, что ваша директива RewriteBase установлена ​​следующим образом:

RewriteBase /subdir

Затем вам просто нужно добавить этот «префикс» в начало целевого URL (ie. RewriteRule замена или url значения атрибута в директиве IIS). В частности, к нему следует добавлять префикс только к относительно строк замещения.

Например:

RewriteRule api/(.*)$ /subdir/api.php?request=$1 [QSA,NC,L]

Другими словами:

<action type="Rewrite" url="/subdir/api.php?request={R:1}" appendQueryString="true"/>

Если RewriteBase / устанавливается, тогда просто префикс с одним sla sh, например. url="/api.php?request={R:1}"

Это все, что делает директива RewriteBase. Он устанавливает URL-префикс для замены относительного пути при использовании в каталоге контексте.

...