Сделать правило переписать весь трафик на php с помощью модуля перезаписи URL - PullRequest
0 голосов
/ 23 октября 2018

Проблема в том, что я не могу получить доступ к конечной точке моего API правильно, всегда возвращает 404 или 403. API создается с Slim в IIS 8, и структура выглядит следующим образом:

структура проекта

Мой web.config находится в /v1/Web.config (в конце проекта на изображении) и имеет следующий код:

<?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <system.webServer>
            <rewrite>
                <rules>
                    <rule name="rule" patternSyntax="Wildcard">
                        <match url="*" />
                        <conditions>
                            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                        </conditions>
                        <action type="Rewrite" url="index.phk" />
                    </rule>
                </rules>
            </rewrite>
        </system.webServer>
    </configuration>

Мне нужно, чтобы, когда пользователь вызывает url "http://myserverip/api/v1", находил файл index.phk внутри общей папки, не имеет значения, вызывает ли пользователь конечную точку или root / v1, он имеетвсегда заходить на index.phk. Спасибо за внимание и извините за мой английский.

1 Ответ

0 голосов
/ 23 октября 2018

Уверен, что значение по умолчанию для свойства logicalGrouping внутри вашего блока <conditions/> равно MatchAll, поэтому по умолчанию IIS пытается сопоставить запросы, которые являются одновременно файлом и каталогом.Если вы вставите logicalGrouping="MatchAny", что должно соответствовать какому-либо условию:

<conditions logicalGrouping="MatchAny">

Кроме того, вашему действию необходим начальный /, и я не буду упоминать, что вы написали index.php index.phk...

<action type="Rewrite" url="/index.php" />

...