Apache-2.2
Apache:使用索引頁面為域上的所有 URL 提供服務,而不重寫路徑?
我正在編寫一個使用 HTML5 歷史 API 的 Backbone.js 應用程序。我希望使用者能夠創建表單的 URL:
domain.com/any domain.com/random domain.com/paththattheuserlikes
並將所有這些 URL 路由到我的
index.html
頁面,Backbone 路由器將在其中獲取路徑並適當地處理請求。我的問題是:如何設置 Apache 以將所有請求路由到該域
index.html
,同時保持路徑到位,以便主幹路由器正確處理請求?我知道如何做一個簡單的 Apache 重定向,但我擔心這會刪除路徑。
在您的 Apache 配置文件中,輸入以下行:
RewriteEngine On RewriteRule ^/[a-zA-Z0-9]+[/]?$ /index.html [QSA,L]
這會將所有由字母數字字元組成的請求重寫為 index.html,同時仍保留查詢字元串並仍顯示為來自與鍵入的相同路徑。因此,如果使用者訪問 yourdoma.in/someoldpath,則會顯示 index.html,但地址欄仍會顯示 yourdoma.in/someoldpath。
如第一張海報所述,如果您想知道輸入了哪個路徑,可以將上面的第二行更改為:
RewriteRule ^/([a-zA-Z0-9]+)[/]?$ /index.html?pathtyped=$1 [QSA,L]
這會將在“pathtyped”請求變數中輸入的原始路徑傳遞給 index.html。