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>

問題は、CIがサブディレクトリ(mydomain.com/codeigniter)にインストールされていて、web.configファイルを理解するのに問題があることです。

サブディレクトリで機能するようにこれを変更する方法を知っていますか?

4

2 に答える 2

16

ルート ディレクトリに WordPress があり、サブディレクトリに CodeIgniter アプリケーションがあります。あなたのようなものを作成web.configし、サブディレクトリに保存します。私の CI アプリは、URL に index.php を必要としなくなりました。

最初に、サブディレクトリを に追加<action url="myapp/index.php/{R:1}"...>し、サブディレクトリのみを参照するように制限できるようにしたいと思いますが、失敗します。サブディレクトリを削除して元のままにしますが、web.configをサブディレクトリに移動すると機能します。

したがって、ルールの異なる 2 つの 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 に答える