Welcome

首页 / 脚本样式 / Vue / IIS_ThinkPHP_UniAPP_H5_History刷新页面无效的解决方法

IIS+ThinkPHP下UniApp H5使用History打包后刷新无法正常访问的解决方法。

首先需要在IIS中安装urlRewrite转发

同时在站点根目录下增加web.config(如果是IIS站点的话,这个文件会自动生成,直接编辑即可)

<?xml version="1.0" encoding="UTF-8"?>

<configuration>

    <system.webServer>

<security>

            <requestFiltering>

                <requestLimits maxAllowedContentLength="102400000" />

            </requestFiltering>

        </security>

        <rewrite>

            <rules>

                <clear />

                <rule name="PAGES" stopProcessing="true">

                    <match url="^pages/(.*)" />

                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />

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

                </rule>

                <rule name="ThinkPHP" stopProcessing="true">

                    <match url="^(.*)$" ignoreCase="false" />

                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">

                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />

                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />

                    </conditions>

                    <action type="Rewrite" url="index.php/{R:1}" appendQueryString="true" />

                </rule>

            </rules>

        </rewrite>

        <directoryBrowse enabled="true" />

        <httpErrors errorMode="Detailed" />

        <handlers>

            <remove name="PHP" />

            <remove name="HTML" />

            <add name="JS" path="*.js" verb="GET,POST" modules="IsapiModule" scriptProcessor="C:\Windows\System32\inetsrv\asp.dll" resourceType="File" preCondition="bitness64" />

            <add name="HTML" path="*.html" verb="GET,POST,PUT,DELETE" modules="IsapiModule" scriptProcessor="C:\Windows\System32\inetsrv\asp.dll" resourceType="Either" requireAccess="Script" preCondition="bitness64" />

            <add name="PHP" path="*.php" verb="GET,POST,PUT,DELETE" modules="FastCgiModule" scriptProcessor="D:\WAMP\PHP7.4.13\php-cgi.exe" resourceType="Either" requireAccess="Script" />

        </handlers>

    </system.webServer>

<system.web>

        <httpRuntime executionTimeout="1800" />

    </system.web>

</configuration>