4

Express サーバーで /foo/* 形式のすべてのパスを無視したい。だからやりたい

app.get('someRegexThatDoesntMatchFoo/*', routes.index)

私が試してみました

app.get('/^\(\(.*foo/.*\)\@!.\)*$', routes.index);

しかし、それは機能しませんでした-キャッチall-routes-besides-fooして適用するroutes.index代わりにCANNOT GET bar/barリクエストに対して

助言がありますか?

ありがとう!

4

4 に答える 4

3

最初の回答が間違っていたので、再度投稿します。

解決

次の正規表現は、/foo/ で始まるパスを除くすべてのパスに一致します。

app.get(/^\/([^f]|f[^o]|fo[^o]|foo[^/]).*$/, routes.index);

文字列のサイズが大きくなるにつれて、このソリューションはますます複雑になります。

おすすめされた

とにかく、ここで正規表現を探すのは正しいことではありません。

ルートを構成するときは、常により特殊なルールから始めて、最も一般的なルールで終了する必要があります。このように、そのような問題では実行されません。

最初にルートを定義し/foo/*、その後で他のすべてのルートを定義する必要があります*

于 2013-09-10T06:48:05.427 に答える
2

処理する (または処理しない)ルートを定義して/foo/*から、ワイルドカードを使用して他のすべてを処理します。

app.get('/foo/*', function(req,res) {
  //ignore or handle
});

app.get('*', routes.index);
于 2013-09-09T19:46:17.667 に答える