Гэтсби и IIS, 404s - PullRequest
       73

Гэтсби и IIS, 404s

0 голосов
/ 08 мая 2020

У меня есть довольно простой сайт Gatsby со страницами, созданными из JSON и файлов readme. Он развернут в службе приложений Azure Windows с использованием IIS.

Сайт работает нормально, за исключением страницы 404, и каждый раз, когда я нажимаю на ссылку, появляется множество ошибок консоли 404.

enter image description here

Переход к отсутствующей ссылке приводит к отображению страницы:

Ресурс, который вы ищете, был удален , имя было изменено или временно недоступно.

Я использую рекомендованный файл web.config, как указано здесь: https://www.gatsbyjs.org/docs/deploying-to-iis/

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <location path="static">
        <system.webServer>
            <httpProtocol>
                <customHeaders>
                    <remove name="cache-control" />
                    <add name="cache-control" value="public, max-age=31536000, immutable" />
                </customHeaders>
            </httpProtocol>
        </system.webServer>
    </location>
    <location path="page-data">
        <system.webServer>
            <httpProtocol>
                <customHeaders>
                    <remove name="cache-control" />
                    <add name="cache-control" value="public, max-age=0, must-revalidate" />
                </customHeaders>
            </httpProtocol>
        </system.webServer>
    </location>

    <system.webServer>
        <staticContent>
            <remove fileExtension=".otf" />
            <mimeMap fileExtension=".otf" mimeType="font/otf" />
            <remove fileExtension=".woff" />
            <mimeMap fileExtension=".woff" mimeType="font/woff" />
            <remove fileExtension=".woff2" />
            <mimeMap fileExtension=".woff2" mimeType="font/woff2" />
            <mimeMap fileExtension=".webmanifest" mimeType="application/manifest+json" />
        </staticContent>
        <rewrite>
            <outboundRules>
              <rule name="AdjustCacheForDontCacheFiles" preCondition="IsDontCacheFile" stopProcessing="true">
                <match serverVariable="RESPONSE_Cache-Control" pattern=".*" />
                <action type="Rewrite" value="public, max-age=0, must-revalidate" />
              </rule>
              <rule name="AdjustCacheForCachePermanentlyFiles" preCondition="IsCachePermanentlyFile" stopProcessing="true">
                <match serverVariable="RESPONSE_Cache-Control" pattern=".*" />
                <action type="Rewrite" value="public, max-age=31536000, immutable" />
              </rule>
              <preConditions>
                <preCondition name="IsDontCacheFile">
                  <add input="{REQUEST_FILENAME}" pattern="(.*\.html)|(sw\.js)|(app\-data\.json)|(page\-data\.json)" />
                </preCondition>
                <preCondition name="IsCachePermanentlyFile">
                  <add input="{REQUEST_FILENAME}" pattern="(.*\.js)|(.*\.css)" />
                </preCondition>
              </preConditions>
            </outboundRules>
        </rewrite>
    </system.webServer>
</configuration>

Есть мысли?

Примечания:

  • Конфигурация по умолчанию в службе приложений IIS
  • Версия IIS: Microsoft-IIS / 10.0
...