2011-07-15 9 views
2

私はPHPのウェブサイトを開発しています、それは私がmod_rewriteモジュールを有効にしている私のhttpd.confのWindows上のlocalhost上のmod_rewriteと.htaccessのこの設定が機能しないのはなぜですか?

をApacheの2.2上のローカルホスト上で動作し、Windows 7:

LoadModule rewrite_module modules/mod_rewrite.so 

私は、ドキュメントをしましたルートはD:\ MyWebにあり、私が作業しているウェブサイトはD:\ MyWeb \ simple_cmsにあります

テスト目的のために、私はD:\ MyWeb \ simple_cmsに.htaccessファイルを置きました。

Options +FollowSymlinks 

RewriteEngine on 
RewriteRule ^(.*)\.htm$ $1.php [NC] 
access.logで0

さて、http://127.0.0.1/simple_cms/index.htmを求めることhttp://127.0.0.1/simple_cms/index.phpに "リダイレクト" 必要がありますが、それは "404エラーが見つかりません"(コースのindex.phpのが存在する)が表示さ

があります:

127.0.0.1 - - [15/Jul/2011:14:16:15 +0200] "GET /simple_cms/index.htm HTTP/1.1" 404 218 

内部エラー。ログ:

[Fri Jul 15 14:19:30 2011] [error] [client 127.0.0.1] File does not exist: D:/MyWeb/simple_cms/index.htm 

なぜこれが機能しないのですか?この正規表現は無効ですか?

+1

1).htaccessファイルが有効になっていることを確認してください(適切な場所に 'AllowOverride All'を入れてください)。 2)書き換えデバッグ( 'RewriteLogLevel 9')を有効にして、書き換えログをチェックしてください。 – LazyOne

+0

'AllowOverride All' - 基本的に、これが答えでした。私はそれを受け入れることができるので、新しい答えとしてそれを入れてください。ありがとうございました –

答えて

4
  1. はまた、あなたhttpd.confでのコメントを解除し、次の行を(場合には、それが存在する)でした。

  2. 何もなければ、書き換えデバッグ(RewriteLogLevel 9)を有効にして、書き換えログを確認してください。

0

httpd.confに変更を加えた後でApacheを再起動しましたか?あなたがそれをしない限り、新しい設定は使用されません。 (適切な場所にAllowOverride Allを置く).htaccessファイルが有効になっていることを確認してください
AddModule mod_rewrite.c

+0

はい、私はこのファイルにいくつかの変更を加えた後毎回Apacheを再起動しました。 httpd.confにこの行 'AddModule mod_rewrite.c'が見つかりませんでした。 –

+1

@Piotr Apache v2以降を使用している場合、その行は必要ありません。 – Caner

+0

@Piotrこれを試しましたか? 'RewriteRule ^(。*).htm $ $ 1.php [NC]' – Caner

関連する問題