mod_rewrite Apache モジュールをロードできません

mod_rewrite Apache モジュールをロードできません

mod_rewriteのモジュールを使用しようとしていますApache24 serverが、ロードできません。このトピックに関して多くの質問があることは承知しており、それらすべてを確認しましたが、何も機能していないようです。これまで私が実行した手順は次のとおりです---

  1. 変更されたhttpd.confファイルは次の変更を行いました:
    a. コメントを解除LoadModule rewrite_module modules/mod_rewrite.so
    b.AllowOverride Noneに変更AllowOverride All

  2. Apacheサーバーを再起動しました

  3. コマンド プロンプト コマンドを使用して、ロードされたモジュールを確認しましたhttpd -M。mod_rewrite モジュールがロードされていることがわかります。以下の画像を添付します。

コマンドプロンプトのスクリーンショット

しかし、これらすべての手順を実行した後、mod_rewrite がロードされたモジュールとして表示されませんphpinfo

phpinfo ファイルのスクリーンショット

上の画像からわかるように、mod_rewrite がロードされたモジュールはありません。また、ワイルド ハックとして、ファイルを使用して URL を書き換えることも試みましたが、これは機能しません。ルート ディレクトリ内にそのファイルを配置しましたが、.htaccessApache はファイルを無視しているようです。.htaccess

 Note: I am running `PHP` as an apache module
 Using `WAMP` stack
 Using `localhost` as server

URL 書き換えのためにこのモジュールがどうしても必要です。このモジュールをロードする別の方法を提案してもらえますか?

編集

.htaccess回答によると、モジュールがロードされており、どちらにも依存していないため、仮想ホストから URL を書き換えようとしました。しかしinfo.php、それでもリダイレクトされません。以下の設定を追加していますVirtual host---

<VirtualHost *:80>
<Directory "/Apache24/htdocs">
Options FollowSymLinks 
AllowOverride All
DirectoryIndex index.html index.php
</Directory>
ServerName localhost
DocumentRoot "/Apache24/htdocs"
ErrorLog "/Apache24/logs/error.log"
CustomLog "/Apache24/logs/access.log" combined
<directory "/Apache24/htdocs">

    <IfModule rewrite_module>
            Options +FollowSymlinks
            RewriteEngine On
    </IfModule>

    <IfModule rewrite_module>
            RewriteRule   ^working.php   fun.html
    </IfModule>

</directory>
# Rewrite Rules #####################
RewriteEngine On
RewriteRule   ^working.php   fun.html
# end Rewrite Rules #################   
</VirtualHost>

上記のコードは、working.phpを実行しようとしてもにリダイレクトしませんfun.html。単に次のように表示されます。

要求された URL /working.php はこのサーバー上に見つかりませんでした。

答え1

  1. mod_rewrite が機能するために .htaccess や AllowOverride は必要ありません。サーバーの管理者である以上、これらを使用しないでください。これらを使用すると、作業が複雑になり、サーバーに不要なオーバーヘッドが発生するだけです。
  2. モジュールをロードする以外に必要なディレクティブは次の通りです:

    RewriteEngineオン

余分な:

  1. 単純なリダイレクトだけが必要な場合は、代わりに Redirect/RedirectMatch (mod_alias から) を検討してください。
  2. 近い将来に悪夢や損失が発生しないように、リダイレクト/書き換えを仮想ホスト コンテキストで定義することを検討してください。

答え2

リンクされたスクリーンショットから、サーバー ルート (ファイルシステム パス) は のように見えますC:/Apache24が、サーバー設定ディレクティブのいずれにも への参照がありませんC:。完全なファイルシステム パスを参照する必要があります。例:

<Directory "C:/Apache24/htdocs">
RewriteRule   ^working.php   fun.html

このディレクティブは、VirtualHost(コンテナ外<Directory>)で直接使用されるため、一致しません。VirtualHost(またはサーバー設定)コンテキストで使用される場合、mod_rewriteは完全なURLパスと一致します。含まれるものスラッシュ プレフィックス。これは、mod_rewrite をディレクトリ/.htaccessコンテキストで使用する場合 (スラッシュ プレフィックスが除外される場合) との重要な違いです。

関連情報