如果所有CMS(Drupal,MediaWiki)僅僅是背景中的PHP或ASP的集合,那麼它們如何在www.example.com/directory/或www.example.com/File_name上顯示頁面,而沒有擴展或任何東西?CMS如何在目錄或純文件名中顯示頁面?
這是一些.HTACCESS配置嗎?蟒蛇? Perl的?什麼可以做到這一點?
我怎麼能這樣做我的服務器/網站?(不使用CMS?)
如果所有CMS(Drupal,MediaWiki)僅僅是背景中的PHP或ASP的集合,那麼它們如何在www.example.com/directory/或www.example.com/File_name上顯示頁面,而沒有擴展或任何東西?CMS如何在目錄或純文件名中顯示頁面?
這是一些.HTACCESS配置嗎?蟒蛇? Perl的?什麼可以做到這一點?
我怎麼能這樣做我的服務器/網站?(不使用CMS?)
查看DirectoryIndex
指令,如果您使用的是Apache,則更改默認文件以顯示目錄。
CMS傾向於使用URL re-writing來獲得用戶友好的URL,而不必在URI上具有文檔ID。
沒有擴展名的路徑是您在網絡服務器級設置的。在IIS中,您可以使用wildcard application mapping。基本上,所有的請求都轉到你指定的ISAPI擴展。在Apache中,你可以使用Roland的建議。
大多數這些類型的應用程序還使用一個名爲URL Rewriting的概念,在前端顯示不同的URL,然後由網絡服務器實際處理該URL。
Web服務器只是一個軟件,用於偵聽傳入請求,當它收到請求時,它會發回某種響應。
傳統上,服務器(例如Apache的/ IIS服務普通的HTML文件)會看傳入的請求,找到他們的本地文件系統中相應的文件(例如,用於/home/about.html,他們會看在家文件夾稱爲about.html),並將該文件的內容發送回發出請求的客戶端。這是快速,輕量級且非常容易實現的 - 但它只是構建Web服務器的一種可能方式。大多數Web服務器都提供了覆蓋這種行爲的功能,並對傳入的請求做了更明智的處理。
您需要做的是配置您的Web服務器本身(IIS,Apache,lighttpd,無論),以將請求定向到特定的腳本或資源。
在Windows上的IIS中,有兩種方法可以實現此目的。
第一個是配置IIS「自定義錯誤」功能並將404錯誤頁面映射到/MyCms/FindPage.asp - 這意味着客戶端在任何時候請求的頁面沒有物理存在時,您的Web服務器將運行該ASP頁面,然後在該頁面中,您可以提取原始請求URL(/home/info/events.html),在數據庫中查找它並返回。客戶將不知道這發生了。
對於更強大的替代方案,您可以使用通配符應用程序映射,如olle的帖子所示 - 這會將每個請求(而不僅僅是「未找到」)映射到您的CMS腳本或處理程序。
大多數網絡服務器都有rewrite engines。這些允許您將內部或外部的某些請求重寫/重定向到其他URL。
對於Apache,有mod_rewrite module或AcceptPathInfo
directive,它提供了類似的功能。
URL與定義服務的內容相匹配。這就是Web服務器所做的。 – 2009-01-11 17:06:32