0

URLをからに書き換える必要がありますhttp://example.com/file.php?id=test&cat=category。パスをhttp://example.com/file?test&cat=category に書き換えるためにのみ達成しました。/file.php/file

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^/?(\w+)$ $1.php [QSA,NC,L]

残りのURLを書き換える方法は?そして2番目の質問:ユーザーが書き換えられたURLを使用しなければならないようにデフォルトのURLアクセスをブロックすることは可能ですか?

4

1 に答える 1

1

クエリ文字列の値を確認するには、次のQUERY_STRINGように RewriteCond を変数と共に使用する必要があります。

RewriteCond %{QUERY_STRING} ^([a-z]+)&cat=([a-z]+)$

これは、クエリ文字列に一連の連続する小文字の後にアンパサンドが続き、次に "cat=" の後に別の一連の連続する文字が続く場合にのみ、RewriteRule を実行する必要があることを示しています。キャプチャ グループは、次のように使用して次の RewriteRule で使用でき%1ます%2

RewriteRule ^([a-z]+)$ $1.php?id=%1&cat=%2 [L]

QSAユーザーの無効なクエリ文字列が書き換えられた URL の末尾に追加されるため、フラグを使用しないでください。フラグを使用NCして一致パターンの大文字と小文字を無視することもできますが、可能であれば小文字のみのファイル名で作業するのがおそらく最善です。

ファイナライズされた (.php) パスへのリクエストをブロックすることに関しては、これを行う方法が思いつきません。ファイナライズされた URL でさえ .htaccess ルールを実行する必要があるため、アクセスを禁止するとリダイレクトが壊れてしまうからです。

于 2013-03-23T13:24:13.990 に答える