我知道我可以使用以下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文件。
您知道如何更改此内容以使其适用于子目录吗?
谢谢:)
答案 0 :(得分:14)
我在根目录中有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>
希望它有所帮助!
答案 1 :(得分: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>