0

URL: http://localhost/url/of/the/keyword/whatever/

RewriteRule ^url/of/the/keyword/([a-z]+)/?$ ?keyword=$1 [L]  
// php  
echo $_GET['keyword'];    
// outputs **whatever** (OK)
RewriteRule ^url/of/the/keyword/(.*)/?$ ?keyword=$1 [L]  
// php  
echo $_GET['keyword'];  
// outputs **whatever/** (with a trailing slash, which is not expected)

2番目の条件の末尾にスラッシュがある理由を誰か説明できますか?


また、パーセンテージ サインインの URL 書き換えを許可するにはどうすればよいですか?

http://localhost/url/of/the/keyword/%40%23%24/

RewriteRule ^url/of/the/keyword/([0-9a-zA-Z-.%])/?$ ?keyword=$1 [L]

上記のルールは機能しません。Z、0-9、ドット、ハイフン、およびパーセント記号を許可するように誰でもこれを修正できますか?

ありがとう!

4

1 に答える 1

2

貪欲であるため、あなたは/2番目に取得しています。つまり、オプションとしてマークしたため、末尾のスラッシュを貪欲にキャプチャします。このような状況を避けるために、(最初の のように) パターンを具体的にするのが最善です。RewriteRule.*/?RewriteRule

一致するパターンは何でも受け入れられます。有効な URL でなければならないことに注意してください。問題は、数量詞を忘れたことです。したがって、グループ化から 1 つの文字のみに一致します。

追加+

RewriteRule ^url/of/the/keyword/([0-9a-zA-Z\-.%]+)/?$ ?keyword=$1 [L]
于 2011-05-21T21:00:38.690 に答える