2012-04-27 6 views
1

私は可能でないことを試みているかもしれません。mod_rewriteは、書き換えられたURLに疑問符を含めることができます

^/report/user?(.*)$ ./report/user.php?userid=$1 [L,NC] 

私は、サーバーのエラーをスローし、内部が/\?を使用して?を脱出しようとしている:私は何をしたいか

は以下を書き換えています。

これを達成する方法はありますか?

+0

RewriteCondで最後の部分を変更します文字列ですが、エラーは別のものかもしれません。残りの命令は何ですか? – craniumonempty

+0

私が持っている書き換えルールは唯一のものなので、何でも使えます。 – lethalMango

+0

'RewriteRule' _pattern_はURLパスと照合します。これはクエリ文字列を除きます。 – MrWhite

答えて

2

たぶん、あなたは試してみてください:

RewriteCond  %{QUERY_STRING} ^([0-9]+)$ 
RewriteRule  ^/report/user$ ./report/user.php?userid=%1 [L,NC] 

あなたのユーザーIDが英数字の場合は、その後、ちょうどあなたがクエリを取得するには、 `%{QUERY_STRING}を`使用することができます([0-9a-zA-Z]+)

+0

ああ、ユーザーIDだけが '?'の後ろにあるのかどうか尋ねるとは思わなかった。そういう意味になります。 – craniumonempty

+0

質問のコードがどのようになっているかを推測するのは私の前提です。 – jCoder

1

OK、?は1回または0回正規表現ですので、が1回か0回あるかどうかを尋ねて、それ以外のものを取得しています。あなたが別のクエリにクエリ文字列をキャプチャ(およびそれを転送しない)にしたい場合は、試してみてください。

RewriteRule ^/?report/user$ /report/user.php?userid=%{QUERY_STRING} [L,NC] 

を...ローカルマシン上?a=1&b=2テスト - あなたは

望むものではないので、おそらく>?userid=a=1&b=2をそれがクエリ文字列のためにどのように出るかはわかりませんが、それを転送する必要があります。 Rフラグで試してみてください。あなたは、単にクエリ文字列に追加したい場合は、試すことができます:

RewriteRule ^/?report/user$ /report/user.php?userid=1 [L,NC,QSA] 

...クエリ文字列に、ローカルマシン上でテスト?a=1&b=2 - >?userid=1&a=1&b=2

だけでないクエリを変更せずに場所を変更>?a=1&b=2

- QSA

RewriteRule ^/?report/user$ /report/user.php [L,NC] 

が...ローカルマシン上のクエリ文字列?a=1&b=2をテストし必要

http://htaccess.madewithlove.be/が必要な場合は、ここで書き直しをテストできます。ただちにロールオーバーすることを覚えておいてください。私はQSA(クエリー文字列の追加)はどちらにもプログラムされていないと思うが、それでもまともなツールだ。

関連する問題