web-dev-qa-db-ja.com

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

mod_rewriteApache24 serverモジュールを使おうとしていますが、読み込めません。このトピックに関して多くの質問があり、それらすべてを調べましたが、何も機能していないようです。これらは私が今まで行ってきたステップです---

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

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

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

The screen shot of my command Prompt

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

Screenshot of phpinfo file

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

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

このモジュールは、URL書き換えの目的でひどく必要です。このモジュールをロードする他の方法を提案できますか?

[〜#〜]編集[〜#〜]

モジュールがロードされ、.htaccessにもinfo.phpにも依存しないことを答えが示唆しているので、仮想ホストからURLを書き換えようとしましたが、リダイレクトされません。以下に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がこのサーバーで見つかりませんでした。

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

    RewriteEngineオン

追加:

  1. 必要なのがそれだけの場合は、単純なリダイレクトの代わりに(mod_aliasからの)Redirect/RedirectMatchを検討してください。
  2. 将来の悪夢や近い将来の脱毛を避けるために、仮想ホストコンテキストでリダイレクト/書き換えを定義することを検討してください。
0
ezra-s

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

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

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

1
MrWhite