2012-09-08 14 views
10

私が持っているルート:ExpressJSルート正規表現

/^[a-z]{0,10}$/ 

app.get('/:id', routes.action); 

それは正常に動作しますが、私はrobot.txtや他のスキップ必要があります(人間を....) 私は正規表現(のみ文字または数字)を作成

この正規表現に一致する唯一のIDだけをルーティングする方法はありますか?

答えて

4

物理的に存在する静的ファイルと一致する経路を避けたい場合は、app.routerの呼び出しの前にstaticミドルウェアを配置するだけです。

静的ファイル(robots.txtなど)が配信され、これらの呼び出しがルーティングに届きません。

問題解決済み;-)

18

このような括弧で正規表現を入れて:

app.get('/:id(^[a-z]{0,10}$)', routes.action); 
2

内部的には、あなたはExpressルータに与える文字列はとにかく正規表現に変換されます。 the codeを見ると、正規表現を直接渡すことができます。

app.get(/^\/[a-z]{0,10}$/, routes.action); 

The docsにも例がある。

0

あなたが複数のルートのためにそれが必要な場合:

app.routes.get 

は、getルートのすべてを有するアレイです。 変更が必要なルートの正規表現オブジェクトを変更することができます。