2013-10-01 22 views
0

我想允許DocPad中的大小寫不敏感的網址,例如http://host.me/SomePath應該引用與http://host.me/somepath/sOmEpAtH相同的文檔。如何在DocPad中允許區分大小寫的URL?

我已經在尋找cleanurls插件,試圖在那裏找到一個匹配的鉤子......但它似乎只是增加了urls只對文檔的元信息允許擴展更少,並可選擇追蹤斜線,網址。

如何將大小寫不敏感的URL添加到DocPad中?

+0

您想要這樣做的目的是什麼? AFAIK這從來都不是URL的問題。如果他們寫錯了,我還沒有遇到過修復網址的網站。 – greduan

+0

很可能你已經出現了很多不區分大小寫的站點,並且很幸運,因爲它們是不可能實現的。 如果有可能阻止用戶輕鬆體驗404,我會希望它。 – stackasec

+0

因爲有帽子,我已經跑了很多404s,這是很多次。我可以想出的幾種方法是要覆蓋所有情況,併爲每種可能的變體創建一個文件,這很愚蠢,因爲每個URL都會有數百個(如果不是數千個)文件。另一種方法是配置一些Apache URL重寫規則或Nginx的等效項,以檢測這些錯別字並修復它們。 – greduan

回答

0

我不知道您的具體情況,但可以在docpad.coffee文件中攔截URL。特別是我正在考慮「serverExtend」事件,您可以在其中創建「server.get」的處理程序。在這種情況下,您可以將所有字符更改爲小寫,然後使用類似下面的內容返回「無外殼」文檔:

document = docpad.getCollection('documents').findOne({relativeOutPath: 'nocapitals.html'}); 
      docpad.serveDocument({ 
       document: document, 
       req: req, 
       res: res, 
       next: next, 
       statusCode: 200 
      }); 
+0

謝謝史蒂夫,聽起來可能是一個很好的起點。 我如何更改它以便所有文檔都是無格式的? – stackasec

+0

史蒂夫,這需要網站託管在動態服務器上嗎?換句話說,一個Node.js服務器? – greduan

+0

爲了允許按請求處理,您需要運行docpad非靜態...是的。 – stackasec

相關問題