这些文件未加载到 IIS 服务器的 MVC 框架中

The files are not loading in MVC framework in IIS server

我第一次在iis 服务器上使用mvc 框架。 我将 .htaccess 更改为 web.config 并且发生了非常奇怪的事情。 一些 .css 和 .js 文件被加载,一些没有。我完全不明白。 例如,这些文件正确加载:

<script src="/assets/plugins/global/plugins.bundle.js"></script>
<script src="/assets/js/scripts.bundle.js"></script>

但是例如这个文件没有加载:

<script src="/assets/js/custom/authentication/sign-in/general.js"></script>

我的文件夹如下所示:

-wwwroot
 web.config
   -public
      -assets
        -js
          -...

可能配置文件有问题。如果我在 .js 文件的地址之前写文件夹名称 / public /,那么一切都很好。 也许你们中的一些人有类似的问题并且知道如何解决它 下面是我的配置文件代码:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <directoryBrowse enabled="false" />
    <rewrite>
      <rules>
        <rule name="rule 1p" stopProcessing="true">
          <match url="^$"/>   
            
          <action type="Rewrite" url="public/" />
        </rule>
        <rule name="rule 2p" stopProcessing="true">
          <match url="^(.*)$"/>
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
          </conditions>
          <action type="Rewrite" url="public/index.php?{R:1}" appendQueryString="true"/>
        </rule>
        <rule name="phpmyadmin" stopProcessing="true">
            <match url="(.*)phpmyadmin(.*)" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

编辑

我将服务器上的物理路径更改为:C:\inetpub\wwwroot\public 并将 web.config 替换为 public 文件夹

-wwwroot
   -public
     -web.config
      -assets
        -js
          -...

我的 web.congif 文件:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="rule 1p" stopProcessing="true">
                  <match url="^(.+)/$"/>
                  <conditions>
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
                  </conditions>          
                  <action type="Rewrite" url="/{R:1}" />
                </rule>
                <rule name="Rule" stopProcessing="true">
                    <match url="^(.*)$" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="index.php?{R:1}" appendQueryString="true" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

我现在唯一的问题是主页没有显示。所有子页面都正常工作,包括 js 和 css 文件。 当我想显示我的主页时。 mypage.com 然后我得到这样的错误:

HTTP Error 403.14 - Forbidden The Web server is configured to not list the contents of this directory. Detailed Error Information: Module DirectoryListingModule Notification ExecuteRequestHandler Handler
StaticFile Error Code 0x00000000 Requested URL localhost
Physical Path C:\inetpub\wwwroot\public Logon Method Anonymous Logon User Anonymous

当我想在 mypage.com/home/index 之后显示主页时,页面会显示但没有 js 和 css 文件

出现此问题的原因可能是该网站未启用目录浏览功能。要解决此问题,您可以尝试使用以下方法:

  1. 启动 IIS 管理器。为此,select 开始,select 运行,键入 inetmgr.exe,然后 select 确定。
  2. 在 IIS 管理器中,展开服务器名称,展开网站,然后select您要更改的网站。
  3. 在“功能”视图中,double-click 目录浏览。
  4. 在“操作”窗格中,select 启用。