2016-03-19 117 views
0

我想準備一個默認的錯誤頁面。在error.html文件我用:龍捲風靜態文件路由

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

在龍捲風Application我用下面的路由指令:

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

比方說,我鍵入URL http://localhost:8888/api。一切都很好,CSS文件加載正確,錯誤頁面呈現良好。但是,當我鍵入http://localhost:8888/api/foo未找到css文件。

在第一種情況下,處理程序正確處理了css請求http://localhost:8888/css/bootstrap.min.css。在第二種方法中,對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

這是因爲你使用相對路徑。有兩種常見的方法可以解決這個問題:

  1. 使用絕對URL。添加/任何資源前(斜線),所以不是<link href="css/bootstrap.min.css" rel="stylesheet">使用<link href="/css/bootstrap.min.css" rel="stylesheet">

  2. <head>部分添加<base>

    基地......指定基本URL使用包含內的所有相對URL文件。

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

而離開處理程序

​​

後者是工作,因爲它的正則表達式是非常廣泛的,當你看到它處理的請求,應該是404。好的做法是讓路線儘可能具體。

+0

我在嘗試你的第一個解決方案之前,它沒有工作,但它現在就工作。感謝您的幫助和第二個例子,這對我來說是新事物。 –