鍍金池/ 問答/PHP  Linux  HTML/ vue單頁面 iis跨域重寫規(guī)則與history模式的規(guī)則沖突

vue單頁面 iis跨域重寫規(guī)則與history模式的規(guī)則沖突

我用的iis10服務(wù)器,需要實現(xiàn)跨域請求,同時呢,也要保證vue history模式刷新頁面時候不會報404等問題,于是在web.config中添加兩個相反的規(guī)則,代碼如下。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>

<rewrite>
  <rules>
    
    <!-- 規(guī)則1 -->
    <rule name="jjss_data2">
      <match url="^api/(.*)" />
      <conditions>
        <add input="{HTTP_HOST}" pattern="^t\.jjss\.com$" />
      </conditions>
      <action type="Rewrite" url="http://b.jjss.com/{R:1}" />
    </rule>

    <!-- 規(guī)則2 -->
    <rule name="Handle History Mode and custom 404/500" stopProcessing="true">
      <match url="(.*)" />
      <conditions logicalGrouping="MatchAll">
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
      </conditions>
      <action type="Rewrite" url="/" />
    </rule>
  </rules>
</rewrite>

</system.webServer>
</configuration>

當(dāng)url中包含api時候,重寫規(guī)則為1,重寫域名請求服務(wù)器數(shù)據(jù),當(dāng)url中不包含api時候,重寫規(guī)則為2,history模式下刷新頁面沒問題。這兩個規(guī)則,分別存在時候,對應(yīng)的情景都正常,但是把這兩個規(guī)則像上面一起寫的時候,規(guī)則1失效了,api接口請求報以下錯誤:

HTTP 錯誤 500.50 - URL Rewrite Module Error.
您查找的資源存在問題,因而無法顯示。

詳細(xì)錯誤信息:
模塊 RewriteModule
通知 BeginRequest
處理程序 ExtensionlessUrlHandler-Integrated-4.0
錯誤代碼 0x8007000d
請求的 URL http://t.jjss.com:80/api/data/article/list?page=1&cat=0
物理路徑 E:webappwebdistapidataarticlelist
登錄方法 尚未確定
登錄用戶 尚未確定

要怎么配置呢。

回答
編輯回答
萌小萌

我對問題的理解是:vue的history模式如何在iis中發(fā)布

iis下vue的history模式發(fā)布配置

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.web>
        <customErrors mode="On" defaultRedirect="index.html">
            <error statusCode="404" redirect="index.html" />
        </customErrors>
    </system.web>
    <system.webServer>
        <httpErrors errorMode="Custom">
            <remove statusCode="404" />    
            <remove statusCode="500" />          
            <error statusCode="500" path="/index.html" responseMode="ExecuteURL" />
            <error statusCode="404" path="/index.html" responseMode="ExecuteURL" />
        </httpErrors>
      
    </system.webServer>
</configuration>
2018年2月21日 17:53