2016-03-19 5 views
0

デフォルトのエラーページを準備しようとしています。私が使用error.htmlファイルで:Tornado静的ファイルルーティング

(r'/css/(.*)', web.StaticFileHandler, {'path': 'assets/css'} 

はのは、私がhttp://localhost:8888/api URLを入力しましょう:竜巻Application

<link href="css/bootstrap.min.css" rel="stylesheet"> 

私は、ルーティング命令を次のように使用します。すべてが問題なく、CSSファイルが正しく読み込まれており、エラーページが正常に表示されます。しかし、http://localhost:8888/api/fooと入力すると、cssファイルが見つかりません。

最初の状況では、http://localhost:8888/css/bootstrap.min.cssのCSS要求がハンドラによって正しく処理されます。 2番目のアプローチでは、cssの要求は処理されないhttp://localhost:8888/api/css/bootstrap.min.cssに変換されます。

両方の状況でリソースを見つけて、エラーページを正しく表示したい。私が使用することができます。私は、エラーページが表示すべきだと思いながら

(r'.*/css/(.*)', web.StaticFileHandler, {'path': 'assets/css'} 

は、しかし、私はブラウザhttp://localhost:8888/api/asdasdsadsad/css/bootstrap.min.css URLとCSSファイルに入力することができます。この時間がdispayedされます。どうすればこの問題を取り除くことができますか?

答えて

0

これは、相対パスを使用しているためです。これを修正する一般的な方法は2つあります。

  1. 絶対URLを使用してください。

    がベース...内に含まれるすべての相対URLに使用するベースURLを指定する任意のリソース前/(スラッシュ)、その代わりに<link href="css/bootstrap.min.css" rel="stylesheet">使用<link href="/css/bootstrap.min.css" rel="stylesheet">

  2. <head>セクション内のページに<base>を追加を追加します。資料。

    <base href="http://www.example.com/">

そして、それは正規表現だから、後者が働いている ​​

としてハンドラを残すあなたはそれが 404あるべきリクエストを処理気づくように、非常に広いです。良い習慣は、できるだけ具体的なルートを持つことです。

+0

私は以前あなたの最初の解決策を試していましたが、今はそれがありませんでした。助けてくれてありがとう、私のために何か新しいものだった2番目の例。 –