7

ファイルから.php拡張子を削除する.htaccessファイルがあり、たとえばso.com/question.phpso.com/questionに変換し、フォルダー内のインデックスファイル(たとえばso.com/answer/index )をリダイレクトします。 .phpは、この回答で説明されているとおりにso.com/answer/にリダイレクトされます

IIS7でローカルにサイトを設定したばかりで、web.configで同じ動作を再現する必要がありますが、.htaccessファイルの変換/書き換えをどこから始めればよいかわかりません。

4

1 に答える 1

31

IIS7 以降では、 URL 書き換えモジュールを使用して Apache .htaccess ルールをインポートできることがわかりました。

  1. Microsoft Web Platform Installerを介してURL Rewrite モジュールをインストールします。
  2. IIS マネージャーを起動し、左側の [接続] ウィンドウで、必要なサイト (既定の Web サイトなど) を選択します。
  3. 中央 (Features View) でURL Rewriteをダブルクリックします。
  4. 右側のパネルで [ルールのインポート... ] をクリックし、ルールを .htaccess ファイルから[ルールの書き換え]ボックスに貼り付けます。
  5. 右側の列で [適用] をクリックします。

上記の特定の質問では、次の .htaccess リダイレクト ルール

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [NC,L]

次の web.config ファイルを生成します。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Imported Rule 1" stopProcessing="true">
                    <match url="^(.*)$" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
                        <add input="{REQUEST_FILENAME}.php" matchType="IsFile" ignoreCase="false" />
                    </conditions>
                    <action type="Rewrite" url="{R:1}.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
于 2012-09-17T18:39:35.640 に答える