IIS URL Rewrite 2.1 пропускает уже существующие файлы - PullRequest
0 голосов
/ 06 января 2020

У меня есть URL переписать в моем web.config. Директивы перезаписи предназначены для выполнения двух действий:

  1. Если URL-адрес ссылается на фактический файл (например, файл css или изображение), не переписывайте
  2. Если URL не относится к реальному файлу, переписать в индекс. php? Request = {R: 1}

Случай 2 работает отлично. Однако, если запрошенный файл существует, я получаю общий ответ c IIS, указывающий на ошибку: HTTP Error 500.50 - URL Rewrite Module Error. - и никаких других подробностей. Коды ошибок просто указывают на общую ошибку модуля перезаписи c.

Что я сделал не так? Это IIS 10.0

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Do not rewrite existing files and folders" enabled="true" stopProcessing="true">
                    <match url="^(.*)$" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" />
                    </conditions>
                    <action type="None" url="{R:0}" appendQueryString="true" logRewrittenUrl="true" />
                </rule>
                <rule name="Framework Parsing" stopProcessing="true">
                    <match url="^(.*)$" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
                    <action type="Rewrite" url="index.php?request={R:1}" logRewrittenUrl="true" />
                </rule>
            </rules>
        </rewrite>
        <caching>
            <profiles>
                <remove extension=".php" />
            </profiles>
        </caching>
        <httpProtocol>
            <customHeaders>
                <remove name="X-Powered-By" />
                <add name="Access-Control-Allow-Origin" value="*" />
                <add name="X-Content-Type-Options" value="nosniff" />
                <add name="X-Xss-Protection" value="1; mode=block" />
                <add name="X-Frame-Options" value="SAMEORIGIN" />
                <add name="Referrer-Policy" value="origin" />
            </customHeaders>
        </httpProtocol>
        <!-- staticContent>
            <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="8.00:00:00" setEtag="true" />
        </staticContent -->
    </system.webServer>
</configuration>

Это детали страницы ошибки:

Module     RewriteModule
Notification       BeginRequest
Handler    StaticFile
Error Code     0x80070005
Requested URL      XXXXXXXXX/css/foundation/foundation.min.css
Physical Path      XXXXXXXXX\public\css\foundation\foundation.min.css
Logon Method       Not yet determined
Logon User     Not yet determined

1 Ответ

0 голосов
/ 07 января 2020

Я заметил, что его метод входа и пользователь не определены. Пожалуйста, попробуйте включить анонимную аутентификацию для вашего правила перезаписи. И убедитесь, что у IUSR есть разрешение на доступ к этим файлам.

...