4

AngularJSHTML5Modeで動作するようにIISURLRewriteモジュールを構成するための情報を検索し、別の質問で見つけた情報を試しました。

HTML5モードでAngularJSアプリケーションをURL書き換えするためにIISを構成するにはどうすればよいですか?

上記のリンクにある質問に表示されているようにIISに変更を加え、ベースURLを設定すると、ルートサイト(http:// localhost / appname /)にアクセスしたときにサイトが機能します。私のすべてのビューとルーティングは正常に機能します。

でも; 新しいタブまたはブラウザウィンドウで特定のURL(つまり、http:// localhost / appname / about)にアクセスしようとすると、404が表示されます。他に不足しているものはありますか?

URL書き換えモジュールがインストールされたWindows7、IIS7を実行しています。

**サンプルURLを受け入れるには、プロトコルの間隔を空ける必要がありました。

4

1 に答える 1

4

この拡張機能をインストールします: https://www.iis.net/downloads/microsoft/url-rewrite

これをsystem.webServerの下のweb.configに追加します

<rewrite>
  <rules>
    <clear />        
    <rule name="Html5Mode" enabled="true" stopProcessing="true">
      <match url="^(.+)$" negate="true" />
      <conditions>
        <add input="{REQUEST_URL}" pattern="^(.+)$" negate="true" />
      </conditions>
      <action type="Rewrite" url="/index.html" logRewrittenUrl="true"/>
    </rule>
    <rule name="AngularJS" enabled="true" stopProcessing="true">
      <match url=".*" />
      <conditions logicalGrouping="MatchAll">
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
        <add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
      </conditions>
      <action type="Rewrite" url="/index.html" />
    </rule>        
  </rules>
</rewrite>

これは、静的ファイルの提供を含む完全な web.config です。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
          <rules>
            <clear />        
            <rule name="Html5Mode" enabled="true" stopProcessing="true">
              <match url="^(.+)$" negate="true" />
              <conditions>
                <add input="{REQUEST_URL}" pattern="^(.+)$" negate="true" />
              </conditions>
              <action type="Rewrite" url="/index.html" logRewrittenUrl="true"/>
            </rule>
            <rule name="AngularJS" enabled="true" stopProcessing="true">
              <match url=".*" />
              <conditions logicalGrouping="MatchAll">
                <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                <add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
              </conditions>
              <action type="Rewrite" url="/index.html" />
            </rule>        
          </rules>
        </rewrite>
        <handlers>
           <clear />
            <add 
                name="StaticFile" 
                path="*" verb="*" 
                modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" 
                resourceType="Either" 
                requireAccess="Read" />
        </handlers>
        <staticContent>
            <mimeMap fileExtension=".*" mimeType="application/octet-stream" />
        </staticContent>
    </system.webServer>
</configuration>
于 2017-01-12T13:44:21.157 に答える