8

我知道我可以使用以下 web.config 代码删除 url 的“index.php”部分:

<rewrite>
  <rules>
    <rule name="Rule" stopProcessing="true">
      <match url="^(.*)$" ignoreCase="false" />
      <conditions>
        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
        <add input="{URL}" pattern="^/favicon.ico$" ignoreCase="false" negate="true" />
      </conditions>
      <action type="Rewrite" url="index.php/{R:1}" appendQueryString="true" />
    </rule>
  </rules>
</rewrite>

问题是我在子目录 (mydomain.com/codeigniter) 中安装了 CI,但我无法理解 web.config 文件。

您知道如何更改它以使其适用于子目录吗?

4

2 回答 2

16

我在根目录中有 WordPress,在子目录中有我的 CodeIgniter 应用程序。我创建了一个与web.config您类似的并将其保存在子目录中。我的 CI 应用程序不再需要 url 中的 index.php。

起初,我将我的子目录添加到 中,<action url="myapp/index.php/{R:1}"...>并希望它可以被限制为仅查看子目录但失败了。我删除了子目录并将其保留为原始但将 web.config 移动到子目录并且它可以工作。

因此,我想也许您可以创建两个具有不同规则的 web.config 文件并将它们保存在不同的目录中。

另一个注意事项可能会有所帮助:启用错误消息以从 IIS 输出详细信息。我使用这些技巧来找出 IIS 如何查找我的文件。它是<httpErrors errorMode="Detailed" />, <asp scriptErrorSentToBrowser="true"/>, 和<system.web>下面的部分:

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

    <system.webServer>

        <httpErrors errorMode="Detailed" />
        <asp scriptErrorSentToBrowser="true"/>

        <rewrite>
        <rules>
            <rule name="RuleRemoveIndex" stopProcessing="true">
                <match url="^(.*)$" ignoreCase="false" />
                <conditions>
                    <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>

    <system.web>
        <customErrors mode="Off"/>
        <compilation debug="true"/>
    </system.web>

</configuration>
于 2012-10-30T09:06:08.547 回答
0

将 web.config 放到根目录下。

用户代码:

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

    <httpErrors errorMode="Detailed" />
    <asp scriptErrorSentToBrowser="true"/>

    <rewrite>
    <rules>
        <rule name="RuleRemoveIndex" stopProcessing="true">
            <match url="^(.*)$" ignoreCase="false" />
            <conditions>
                <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>

<system.web>
    <customErrors mode="Off"/>
    <compilation debug="true"/>
</system.web>

于 2018-04-16T08:56:50.960 回答