私のサーバー (_SERVER["SERVER_SOFTWARE"] -Microsoft-IIS/7.0),Architecture x86 で mod_rewrite 機能が有効になっていないことがわかりました。 mod_rewrite を有効にするにはどうすればよいですか。
4 に答える
私にとってうまくいった答えは、Microsoft URL Rewriteモジュールをインストールしてから、サイトのルートにこれを含む web.config ファイルを作成することでした (ルール):
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Security Rule" stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<conditions logicalGrouping="MatchAny">
<add input="{QUERY_STRING}" pattern="mosConfig_[a-zA-Z_]{1,21}(=|\%3D)" ignoreCase="false" />
<add input="{QUERY_STRING}" pattern="base64_encode.*\(.*\)" ignoreCase="false" />
<add input="{QUERY_STRING}" pattern="(\<|%3C).*script.*(\>|%3E)" />
<add input="{QUERY_STRING}" pattern="GLOBALS(=|\[|\%[0-9A-Z]{0,2})" ignoreCase="false" />
<add input="{QUERY_STRING}" pattern="_REQUEST(=|\[|\%[0-9A-Z]{0,2})" ignoreCase="false" />
</conditions>
<action type="CustomResponse" url="index.php" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
</rule>
<rule name="SEO Rule">
<match url="(.*)" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" pattern="" ignoreCase="false" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" pattern="" ignoreCase="false" />
<add input="{URL}" negate="true" pattern="^/index.php" ignoreCase="false" />
<add input="{URL}" pattern="(/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$" />
</conditions>
<action type="Rewrite" url="index.php" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
商用ホスティング プロバイダーでホスティングしている場合は、Microsoft URL Rewriteモジュールがインストールされている可能性が高くなります。これにより、Apache mod_rewrite モジュールと同様の機能が提供されます。
このモジュールがインストールされているかどうかをテストするweb.config
には、Web サイトのルートに以下の内容で呼び出されるファイルを作成し、 Web サイトのドメインがhttp://www.domain.com/google
どこにあるかを試してください。domain.com
google.com にリダイレクトされる場合、ホストには URL 書き換えモジュールがインストールされています。
web.config:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<clear />
<rule name="Redirect to google.com" stopProcessing="true">
<match url="^google$" />
<action type="Redirect" url="http://www.google.com/" appendQueryString="false" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
1) httpd.conf を見つけます (通常、このファイルは conf 、 config 、またはそれらの行に沿った何かと呼ばれるフォルダーにあります)
2) LoadModule rewrite_module modules/mod_rewrite.so 行を見つけてコメントを外します。
3) DocumentRoot “C:/path/to/my/root” の行を見つけます。そこには次のような内容があります。
これら 2 つの中括弧内の内容が次のようになっていることを確認してください
オプション すべて
AllowOverride すべて
4) すべてが完了したら、Apache サーバーを再起動します。
Windows OS で使用できる LINUX 用の mod_rewrite の無料バージョンはありません。私が見つけた唯一の方法は、URL REWRITE を使用して IIS に .htaccess ファイルをインポートすることでした。これは Web Platform Installer で無料で入手できます。
URL REWRITE コンポーネントをインストールしたら、以下のリンクの手順に従って .htaccess ファイルをインポートし、Windows に相当する web.config ファイルを作成します。
http://www.iis.net/learn/extensions/url-rewrite-module/importing-apache-modrewrite-rules
乾杯。