2012-03-08 9 views
0

私は見て、否定的な見通しについてのものを見つけましたが、私はこれについて何をすべきかまだ分かりません。私はRewriteRule ^([a-zA-Z0-9]+)/?$を持っていますが、私は特に "help"( "help"ではなく "hellp"など)という単語を将来的に除外したいと考えています。申し訳ありませんが、これには似たような疑問がたくさんあることはわかっていますが、これを具体的にどのように適用するかを理解できていません。すべての文字と数字の組み合わせは一致しますが、特定の単語は一致しますか?

+0

実際に解決しようとしている問題は何ですか? "ヘルプ"を受け取り、あなたが望むものを何でも実行する、より高い優先順位(すなわち、最初にチェックされる)を有するリライトルールを単に有することは、ここでの最良の解決策である可能性が非常に高い。 –

+0

@AlexanderCorwin私は「ヘルプルール」を持っていますが、そのルールを取るリンクをクリックすると、実際には最後のRewriteRuleが取られ、他のものもスキップされます。 RewriteRule ^/help /?$ help.php'は 'RewriteRule ^([a-zA-Z0-9] +)/ a /([^ /] +)/([^])で処理されます。 /] +)/?$ page.php?var1 = $ 1&var2 = $ 2&var3 = $ 3' EDIT-気にしないでください。 – qitch

答えて

1

Apache mod-rewriteは、RewriteRulesを解析する方法と、競合が発生した場合にどのルールが適用されるかという明確な順序を持つ必要があります。

最初の一致規則に従うと仮定して、一般規則の前に特定の規則を定義するだけです。

+0

私はそれをしたと思ったが、うまく動作していなかった。私はそれをもう一度見ます。 – qitch

+0

私は "/"で始まりました。私は持ってはいけません。それがうまくいかない理由です。 – qitch

0

また、「ヘルプ」以外のすべての英数字の文字列に一致する正規表現を書くこともできます。正規表現([a-zA-Z0-9]+)/?&~helpは、&~演算子を使用しない正規表現に書き換えることができます(広くは使用できません)。

正規表現は犬の朝食のように見えるので、実際にはこれをしたくないです。しかしここに方法があります。

まず、短いすべての英数字コードが一致します。 「HELは」許容できる問題ではありませんし、どちらも他の三文字/数字の配列である。

[a-zA-Z0-9]{1,3} 

我々はまた、5つの以上の文字の配列を認識することができます。

[a-zA-Z0-9]{5,} 

今すぐ助けていない4文字の配列が一致し、トリッキーな部分が来る:彼らはこれを含めることで、「ヘルプ」のいずれか、ではありません。これは、hで始まらない4つのchar識別子、または2番目の文字としてeを持たない4つのcharを意味します。その他:これらのいずれにも一致しない4つの文字パターンは、「ヘルプ」という単語のみです。 hのため最初のもの、eのための2番目のものと一致しません。

したがって、アンカーリング。深呼吸をして:

^([a-zA-Z0-9]{1,3}|[a-zA-Z0-9]{5,}|[a-gi-zA-Z0-9][a-zA-Z0-9]{3}|[a-zA-Z0-9][a-df-zA-Z0-9][a-zA-Z0-9]{2}|[a-zA-Z0-9]{2}[a-km-zA-Z0-9][a-zA-Z0-9]|[a-zA-Z0-9]{3}[a-oq-zA-Z0-9])$ 

これをEFNetのIRCネットワーク上の#unixのための新しいチャンネルキーでなければなりません。 :)

私はこれをテストするつもりですか?あなたはナッツですか...

もちろん、私はしましたが、sed。若干。ほとんどのメタ文字をエスケープする必要があります。

$ sed -n -e '/^\([a-zA-Z0-9]\{1,3\}\|[a-zA-Z0-9]\{5,\}\|[a-gi-zA-Z0-9][a-zA-Z0-9]\{3\}\|[a-zA-Z0-9][a-df-zA-Z0-9][a-zA-Z0-9]\{2\}\|[a-zA-Z0-9]\{2\}[a-km-zA-Z0-9][a-zA-Z0-9]\|[a-zA-Z0-9]\{3\}[a-oq-zA-Z0-9]\)$/p' 
a <- typed 
a 
aa <- typed 
aa 
aaa <- 
aaa 
aaaa <- 
aaaa 
aaaaa <- 
aaaaa 
help <- aha, no response from sed 
aelp <- 
aelp 
helper <- 
helper 
+0

P.S.私は〜、&、 - をサポートする正規表現の実装を書いたことを知っています。すぐにApacheに来ることはありません。 :P – Kaz

関連する問題