0

ユーザーがmyserver.comインデックスルートにアクセスして来られるようにしたい。

そして、彼らが訪問したときにリストページを表示したいmyserver.com/pages.

ただし、ルートmyserver.com/invalidpath/blablaに落ちるなど、ユーザーが無効な URLにアクセスした場合。indexPage

404 page無効な URL にアクセスしたときに で応答したい。

これが私のルートの例です:

  1 routes :: ServerPart Response                                                                                                                                                                                   
  2 routes = msum                                                                                                                                                                                                   
  3     [ dirs "pages/delete" $ delete                                                                                                                                                                              
  4     , dirs "pages/edit"   $ edit                                                                                                                                                                                
  5     , dirs "pages/save"   $ save                                                                                                                                                                                
  6     , dirs "pages"        $ listPages                                                                                                                                                                           
  7     , indexPage]  

私が今考えていることは、私のindexPage関数では、パスに何かが含まれているかどうか、またはパスが空であるかどうかを確認できるということです。このようにして、フォール スルーが無効な URL によるものか、インデックス ページへのアクセスによるものかを判断できます。

これを行う良い方法はありますか?

4

1 に答える 1

3

この回答を書いているときに、ハッキングに関するドキュメントで解決策を見つけました。

nullDirパスが空のときに使用する関数が呼び出されます。

この関数を使用すると、サンプル ルートは次のようになります。

  1 routes :: ServerPart Response                                                                                                                                                                                   
  2 routes = msum                                                                                                                                                                                                   
  3     [ dirs "pages/delete" $ delete                                                                                                                                                                              
  4     , dirs "pages/edit"   $ edit                                                                                                                                                                                
  5     , dirs "pages/save"   $ save                                                                                                                                                                                
  6     , dirs "pages"        $ listPages                                                                                                                                                                           
  7     , nullDir >> indexPage
  8     , 404Page]  

index page はパスが空の場合にのみ表示404 pageされ、他のすべてのフォール スルーには が表示されるようになりました。

于 2013-10-03T13:24:04.957 に答える