2010-12-03 13 views
0

私は、phpのfunction mode_rewriteを正しく使う方法を知りたいと思います。 私は現在xamppで開発中です。 httpd.confファイルでLoadModule rewrite_module modules/mod_rewrite.soを有効にしました。 はまた、私は行以下に編集:私の.htaccessファイルでmode_rewrite関数の使い方

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

を、私は、コードを以下ました:

RewriteEngine On 
RewriteRule ^([^/]*)\.html$ /?m=$1 [L] 

だから、?start.html?m=startを変更する必要があります。 今私がlocalhost/page/start.htmlを開くと、それは私に "それは働く"としか表示されません。しかし、それは私にlocalhost/page/?m=startの内容をなぜ示さないのですか?

さらに質問すると、からlocalhost/page/?m=start&set=updateにアクセスすることができる書き換えルールを変更するにはどうすればよいですか?

ありがとうございました!

答えて

1

あなたの代わりに絶対パス/を使用しています。したがって、/page/の.htaccessファイルでこのルールを使用すると、/page/start.htmlの要求は実際にはに書き換えられ、/page/?m=startには書き換えられません。

ではなく相対パスを試してみてください:うわー、非常に高速な応答:)おかげで、それは今働いている

RewriteRule ^([^/]*)\.html$ ./?m=$1 [L] 
+0

。 2番目の問題を解決する方法を教えてください。 たとえば、このlocalhost/page /?m = kontaktです。このページでフォームを送信すると、URLはlocalhost/page /?m = kontakt&set = updateのようになります。書き換えルールはどのように見えるのですか? – enyce12

+0

@Damian Frizzi:ああ、それを見ていない。この場合、 'RewriteCond'を使って'%{QUERY_STRING} 'の値を調べる必要があります。しかし、相互再帰を避けるためには、 '%{THE_REQUEST}'を見たり、応答ステータスコードを調べたりする必要があります。それは少し複雑です。したがって、スタティックファイルだけでなくプログラミング言語を使用している場合は、そのプログラミング言語を使用してそのリダイレクトを行う方がよいでしょう。 – Gumbo

+0

Puh、それは私にとって理解するのが少し難しいです。私は以前これで働いたことがありません。 %{QUERY_STRING}と%{THE_REQUEST}の値はどこで取得できますか?私はPHPを使用しています、どのように私はリダイレクトを行うためにこの言語を使用できますか? – enyce12