2012-01-18 8 views
0

私は自分のサイトでmodリライトをテストしています。私は単純なコードを試してみると思ったが、うまくいかなかった。私はルートディレクトリ(localhost)に.htaccessファイルを持っています。 localhostにはprofile.phpという名前のページがあります。 Profile.phpは私のデータベースから変数pを取ることができます。つまり、localhost/profile.php?p=3のようになります。ここで、3は一意のIDです。私はlocalhost/profile.phpに行くとき?p = 3それは動作しますが、私がlocalhost/3に行くとき、それはしません。 404が見つかりません。get変数のModリライト(htaccess)が機能しない

の.htaccessファイル:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule .* - [L] 
RewriteRule ^(.*)$ http://localhost/profile.php?p=$1 [NC] 

EDIT:

のhttpd.conf(現在):

<Directory /> 
Options FollowSymLinks 
AllowOverride All 
Order deny,allow 
Deny from all 
</Directory> 
+0

を動作しません、HTTP 'との点に注意してください:// localhost'前に、Apacheはリダイレクトしようと、内部で書き換えされていません。 –

+0

@JonLinそれはどういう意味ですか?私はこれに新しいです。 – kirby

答えて

0

は、あなたのサイトのルートディレクトリにあなたのhtaccessファイルに以下を追加してみてください

RewriteEngine on 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 

#assume that p is only numeric 
RewriteRule ^([0-9]+)$ profile.php?p=$1 [L,NC] 

編集:

httpd.confを確認して、AllowOverrideがallに設定されているかどうかを確認してください。 noneに設定すると、.htaccessファイルは私のために正常に動作します

<Directory /> 
Options FollowSymLinks 
AllowOverride All 
+0

ありがとうが、それは仕事をしなかった。同じ404エラー。 – kirby

+0

には、この.htaccessファイルが動作しているかどうかを簡単にテストする方法があります。 mod_rewriteがオンになっていることをApacheで確認しました。 – kirby

+0

@ user802370あなたのhtaccessに無効なものを入れてください。 '213werw42'となり、もし500エラーが出たら、それは –

関連する問題