Apache-2.2

Apache:使用索引頁面為域上的所有 URL 提供服務,而不重寫路徑?

  • January 26, 2012

我正在編寫一個使用 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。

引用自:https://serverfault.com/questions/353825