2011-08-17 13 views
5

シンプルなモッズ書き換え

/home 

/index.php?page=home 
/?page=home 

は、誰かがこれがどのように行われるか私を見ることができますか?私たちは主題を取り上げていますが、modの書き換えを読む良いリソースはありますか?これまでの私の最大の苦労は、私はそれをデバッグする方法がないことです。物事は働くのか、しないのか。

答えて

6

これにはさまざまな方法があります。この1は、任意の存在しないファイルにルールを適用します。

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?page=$1 [L] 

編集:あなたが一番上にRewriteEngine onを追加する必要があり、これはあなたのWebドキュメントルートに.htaccessになります。これはもちろん、htaccess(mod_rewrite)の使用があなたのWebホストで許可されているかどうか、また、ルールオーバーライドファイルの名前を.htaccessにするかどうかによって異なります。両方ともかなり一般的ですが、問題ではありません。

+0

ありがとう、これは実際に私が必要としていたものですが、「存在しないファイルにもルールを適用します」という意味はどうですか? –

+0

'RewriteRule'行は、要求がファイルシステム上のファイル(行1)またはファイルシステム上のディレクトリ(行2)と一致しない場合にのみ適用されます。言い換えれば、これはまだあなたが実際に存在するファイルを提供し、他のすべてをindex.phpに渡すことができます –

+0

ああ、ありがとう、ありがとう。 –

4

私が理解している場合は、エンドユーザにexample.com/homeと入力し、それを/index.php?homeに書き直してもらいたいですか?

RewriteLogを有効にすることができます。ただし、コメントに示唆されているように、デバッグにのみ使用する必要があります。それを無効にするか、生産レベルを非常に低く設定するのが最善です。

RewriteLog "/path/to/logs/rewrite.log" 
# Increase the log level (default 0, >4 gets pretty verbose) 
RewriteLogLevel 3 
+0

上に読むことができ相続人のウェブサイトは、これは非常に便利です、ありがとうございました。 –

+1

小さなサイドノート - 'RewriteLogLevel 3'は重大な書き換えデバッグには低すぎます - 詳細に入ることなく何が起こっているのかを概観できます。詳細を見るにはレベル9を使用します。これははるかに冗長です。 – LazyOne

+1

RewriteLogに関するこの回答に深刻な警告を追加します.RewriteLogはリソース豚になる可能性があるため、「忘れてしまって」、そのファイルがギガバイトになるので、長い間高レベルではいけませんより速い... – sg3s

3
RewriteRule .*\?page=(\w+)$ /$1/ [NC] 

このトリックを行う必要がありますが、具体的にどのような場合に作業する必要がありますか?

あなたはhtaccessファイル

http://corz.org/serv/tricks/htaccess2.php

+0

興味深いアプローチです、ありがとうございます。この場合、RewriteCondの必要はありませんか? –

+0

編集後にあなたの質問を読んでください私はこれがあなたがしたいことではないことを認識しています...きれいなURLのためにMattsの答えをチェックしてください。私が与えたウェブサイトはまだ素晴らしいリソースです:) – sg3s

関連する問題