2012-01-14 9 views
0

NUM +言葉が、それはこれらとうまく動作URL書き換えURLの一部が数値であるか、私は問題を抱えている

RewriteRule ^([aA-zZ0-9_-]+)/?([0-9]*)/?([A-Za-z0-9_-]*)/?([A-Za-z0-9_-]*)/?$ index.php?m=$1&r=$2&a=$3&b=$4 [QSA] 

コードの書き換え、そのURLを修正する際reconizeする方法:(聖霊降臨祭に及びwhitout終わります/」 ")

Test/1234/gotoA/gotoB/ 
Test/1234/gotoA/ 
Test/1234/ 
Test/gotoA/gotoB/ 

gotoAは数exempleを起動するときに問題がある:

Test/123gotoA 

返すこと:

index.php?m=Test&r=123&a=gotoA&b= 

どうすれば修正できますか?

答えて

1

問題は、/をオプションにすることです。任意にする必要があるのは/(xxx)の全体です。

これを試してみてください:

RewriteRule ^([aA-zZ0-9_-]+)(?:/(\d+))?(?:/([a-zA-Z\d_-]+))?(?:/([a-zA-Z\d_-]+))?/?$ index.php?m=$1&r=$2&a=$3&b=$4 [QSA] 

我々は入力としてTest/123gotoAであなたの元の正規表現を取る場合は、ここでは何が起こるかです:

#before first match 
regex: |^([aA-zZ0-9_-]+)/?([0-9]*)/?([A-Za-z0-9_-]*)/?([A-Za-z0-9_-]*)/?$ 
input: |Test/123gotoA 
#^
regex: ^|([aA-zZ0-9_-]+)/?([0-9]*)/?([A-Za-z0-9_-]*)/?([A-Za-z0-9_-]*)/?$ 
input: |Test/123gotoA 
# [aA-zZ0-9_-], once or more, captured: $1 is "Test" 
regex: ^([aA-zZ0-9_-]+)|/?([0-9]*)/?([A-Za-z0-9_-]*)/?([A-Za-z0-9_-]*)/?$ 
input: Test|/123gotoA 
# /?: a/is found 
regex: ^([aA-zZ0-9_-]+)/?|([0-9]*)/?([A-Za-z0-9_-]*)/?([A-Za-z0-9_-]*)/?$ 
input: Test/|123gotoA 
# [0-9], zero or more times, captured: $2 is "123" 
regex: ^([aA-zZ0-9_-]+)/?([0-9]*)|/?([A-Za-z0-9_-]*)/?([A-Za-z0-9_-]*)/?$ 
input: Test/123|gotoA 
# /?: no /, but satisified, since ? can match zero times 
regex: ^([aA-zZ0-9_-]+)/?([0-9]*)/?|([A-Za-z0-9_-]*)/?([A-Za-z0-9_-]*)/?$ 
input: Test/123|gotoA 
# [A-Za-z0-9_-], zero or more times, captured: $3 is "gotoA" 
regex: ^([aA-zZ0-9_-]+)/?([0-9]*)/?([A-Za-z0-9_-]*)|/?([A-Za-z0-9_-]*)/?$ 
input: Test/123gotoA| 
# /?: no /, but satisified, since ? can match zero times 
regex: ^([aA-zZ0-9_-]+)/?([0-9]*)/?([A-Za-z0-9_-]*)/?|([A-Za-z0-9_-]*)/?$ 
input: Test/123gotoA| 
# [A-Za-z0-9_-], zero or more times, captured: $4 is "" 
regex: ^([aA-zZ0-9_-]+)/?([0-9]*)/?([A-Za-z0-9_-]*)/?([A-Za-z0-9_-]*)|/?$ 
input: Test/123gotoA| 
# /?: no /, but satisified, since ? can match zero times 
regex: ^([aA-zZ0-9_-]+)/?([0-9]*)/?([A-Za-z0-9_-]*)/?([A-Za-z0-9_-]*)/?|$ 
input: Test/123gotoA| 
# $: satisified, since this is the end of input 
regex: ^([aA-zZ0-9_-]+)/?([0-9]*)/?([A-Za-z0-9_-]*)/?([A-Za-z0-9_-]*)/?$| 
input: Test/123gotoA| 
# end of match: success 

を今、書き換えられた正規表現と、物事は異なります。

# before first match 
regex: |^([aA-zZ0-9_-]+)(?:/(\d+))?(?:/([a-zA-Z\d_-]+))?(?:/([a-zA-Z\d_-]+))?/?$ 
input: |Test/123gotoA 
#^
regex: ^|([aA-zZ0-9_-]+)(?:/(\d+))?(?:/([a-zA-Z\d_-]+))?(?:/([a-zA-Z\d_-]+))?/?$ 
input: |Test/123gotoA 
# [aA-zZ0-9_-], one or more times, captured: $1 is "Test" 
regex: ^([aA-zZ0-9_-]+)|(?:/(\d+))?(?:/([a-zA-Z\d_-]+))?(?:/([a-zA-Z\d_-]+))?/?$ 
input: Test|/123gotoA 
# Try and find /, then one or more digits, zero or one time: match, $2 is "123" 
regex: ^([aA-zZ0-9_-]+)(?:/(\d+))?|(?:/([a-zA-Z\d_-]+))?(?:/([a-zA-Z\d_-]+))?/?$ 
input: Test/123|gotoA 
# next group: a/must be found, but the next character is "g": backtrack, $2 is now "12" 
regex: ^([aA-zZ0-9_-]+)(?:/(\d+))?|(?:/([a-zA-Z\d_-]+))?(?:/([a-zA-Z\d_-]+))?/?$ 
input: Test/12|3gotoA 
# but here again the next character is not a /: the engine must backtrak again, until: 
regex: ^([aA-zZ0-9_-]+)(?:/(\d+))?|(?:/([a-zA-Z\d_-]+))?(?:/([a-zA-Z\d_-]+))?/?$ 
input: Test|/123gotoA 
# (?:/(\d+))? is still satified, as it is optional, and $2 is now "" 
# Next group: /, followed by [a-zA-Z\d_-] one or more times, captures: $3 is "123gotoA" 
regex: ^([aA-zZ0-9_-]+)(?:/(\d+))?(?:/([a-zA-Z\d_-]+))?|(?:/([a-zA-Z\d_-]+))?/?$ 
input: Test/123gotoA| 
# Next group: same as second, but satisfied with an empty match: $4 is "" 
regex: ^([aA-zZ0-9_-]+)(?:/(\d+))?(?:/([a-zA-Z\d_-]+))?(?:/([a-zA-Z\d_-]+))?|/?$ 
input: Test/123gotoA| 
# an optional /: satisified 
regex: ^([aA-zZ0-9_-]+)(?:/(\d+))?(?:/([a-zA-Z\d_-]+))?(?:/([a-zA-Z\d_-]+))?/?|$ 
input: Test/123gotoA| 
# end of input: satisified 
regex: ^([aA-zZ0-9_-]+)(?:/(\d+))?(?:/([a-zA-Z\d_-]+))?(?:/([a-zA-Z\d_-]+))?/?$| 
input: Test/123gotoA| 
# Match 
+0

thxは現在完全に動作しているようです:D – oscurodrago

+0

さらに良い方法w ouldはいくつかのリライトルールを書いて、あなたの正規表現はよりシンプルになります – fge

関連する問題