web-dev-qa-db-ja.com

すべてのリクエストをIISファイルに送信する書き換えルールに相当するPHPとは何ですか?

私はすべてのWeb開発作業で常にApacheを使用してきましたが、IISを回避するのに苦労しています。すべてのリクエストを1つの特定のファイル「api.php」に再ルーティングするAPIがあります。IISで次のことを行うにはどうすればよいですか。

RewriteEngine on
RewriteRule ^/.* /api.php

私のサーバーはweb.configファイルでこれを実現することのみを許可しているので、IISマネージャーやその性質のものにはアクセスできません。 IIS 7.5を使用しています。

2
user2983512

使用しているデザインパターンは、「 フロントコントローラー 」と呼ばれ、リクエストを処理するための中心的なエントリポイントです。

さまざまなWebサーバーでそのパターンを実装する方法を示すWebサイト です。 web.configファイルのIISに推奨する構成は次のとおりです。

<?xml version="1.0"?>
<configuration>
    <system.webServer>
        <defaultDocument>
            <files>
                <clear />
                <add value="index.php" />
            </files>
        </defaultDocument>
        <rewrite>
            <rules>
                <rule name="Silex Front Controller" stopProcessing="true">
                    <match url="^(.*)$" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="index.php" appendQueryString="true" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
2

最初の方法:

以下からWebプラットフォームインストーラーをインストールします。
http://www.iis.net/downloads

Urlrewriteを見つけてIISに追加すると、IISでURL書き換えセクションを見つけることができます。

URL書き換えを使用して、新しいルールを作成するか、.htaccessファイルからインポートできます。

第二の簡単な方法:

  1. IISを開き、関連するWebサイトを選択します
  2. エラーセクションに移動して、404エラーを見つけます。
  3. それをダブルクリックします。
  4. URLを/index.phpに変更します

これで、すべての不明なリクエストがindex.phpにリダイレクトされます。

1
EngineerCoder