web.config重写不适用于主页

时间:2017-02-20 10:38:47

标签: codeigniter url-rewriting web-config

我的root web.config文件中有规则强制使用尾随斜杠并将所有URL重写为索引文件,这是Codeigniter设置的一部分。这一切似乎都工作,除了在主页上,服务器(而不是Codeigniter)抛出404错误。

奇怪的是,它只在现场网站上播放,它在我的本地设置(与现场设置完全相同)上运行良好。

我的web.config文件与索引文件一起位于根目录中,并包含以下规则;

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
    <rewrite>
        <rules>
            <rule name="Force trailing slash" 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="Redirect" url="{R:1}/" redirectType="Permanent" />
            </rule>
            <rule name="Remove index file" stopProcessing="true">
                <match url="(.*)$" />
                <conditions logicalGrouping="MatchAll">
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                    <add input="{REQUEST_URI}" pattern="^/$" negate="true" />
                </conditions>
                <action type="Rewrite" url="index.php/{R:1}" appendQueryString="true" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

如何确定在实际网站上导致此问题的原因,或者我的重写规则中是否需要更改内容?

1 个答案:

答案 0 :(得分:0)

试试这个,它为我工作!

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