我一直在爲我正在開發的一個項目嘗試使用Backbone,並且一直在爲獲得Backbone的'pushState'功能而發生問題。HTML5 PushState正則表達式問題
我有一個簡單的項目,包括4個視圖和一個路由器。如果在這種情況下很重要,我會通過元素的id進行路由。當我去其中一個視圖的散列(http://example.com/backbonetest/ #step1)時,它顯示正確,並且url被更改。這是我期望在這裏發生的事情,但是當我嘗試導航到沒有散列的同一事物時,問題就出現了(http://example.com/backbonetest/ step1)。由於該頁面不存在,我在服務器(IIS)上獲得了404的預期結果。
我一直試圖做的一整天是寫一個IIS的正則表達式,它會抓住並重寫url,去掉url結尾處的片段,以便正確地提供頁面。我寧願簡單地重寫url,而不用擁有同名的物理文件,因爲頁面的內容將被動態生成,並且需要腳本來獲取內容。
我遇到的問題可能與我需要如何在文件系統上構建文件夾/腳本/樣式有關。我希望能夠將整個示例包含在/backbonetest/文件夾中。對於腳本,'backbonetest/scripts'等等。
我做了,我一直對我的測試正則表達式的表達式的URL列表,我一直在努力的結果,以實現:
Input: Output: 2 a2 ab2 ab22 step2 script.js script.js scripts/ scripts/ 555/stuff 555/stuff scripts/script.js scripts/script.js
編輯:我自從發現使用的URL不包括前面的斜槓, 這就是爲什麼Qtax的解決方案在IIS中不起作用。新的輸入結構如上所示。
'/ 555/stuff'url我希望404正常。我只想重寫url,如果沒有定義除當前目錄以外的子目錄,並且url沒有引用顯式文件(例如帶有擴展名的文件)。
我一直在尋找解決這個問題的網絡,以及使用regexr進行實驗,但沒有設法提出適當的解決方案來解決我的問題。在沒有找到任何單一的東西后,我想我一定是看着這個錯誤的方式...
任何人都可以幫我嗎?
不知道IIS,但正則表達式重寫你可以使用的是'^/[^。/ ] + $'到'/'。 – Qtax 2012-04-11 16:21:35
這適用於我的測試數據以及IIS管理器中的測試人員,但由於某些原因,這些URL要麼未被正確捕獲,要麼已被重寫到錯誤的地方。 – brins0 2012-04-12 09:08:33
我發現我在這裏給出的輸入並不是IIS用於重寫規則的東西,它解釋了爲什麼它不起作用。在Qtax建議的表達式中,爲了使它適用於新的輸入字符串,我需要改變什麼? – brins0 2012-04-12 13:00:09