2009-01-11 128 views
0

如果所有CMS(Drupal,MediaWiki)僅僅是背景中的PHP或ASP的集合,那麼它們如何在www.example.com/directory/www.example.com/File_name上顯示頁面,而沒有擴展或任何東西?CMS如何在目錄或純文件名中顯示頁面?

這是一些.HTACCESS配置嗎?蟒蛇? Perl的?什麼可以做到這一點?

我怎麼能這樣做我的服務器/網站?(不使用CMS?)

回答

6

你在URLRewriting之後。它使Web服務器能夠顯示URL的內容,這些URL既不直接映射到文件系統中的內容,也不直接映射到特定的動態內容處理程序(這是通常用於提供內容的兩種標準方式)。

+0

URL與定義服務的內容相匹配。這就是Web服務器所做的。 – 2009-01-11 17:06:32

1

查看DirectoryIndex指令,如果您使用的是Apache,則更改默認文件以顯示目錄。

CMS傾向於使用URL re-writing來獲得用戶友好的URL,而不必在URI上具有文檔ID。

1

沒有擴展名的路徑是您在網絡服務器級設置的。在IIS中,您可以使用wildcard application mapping。基本上,所有的請求都轉到你指定的ISAPI擴展。在Apache中,你可以使用Roland的建議。

大多數這些類型的應用程序還使用一個名爲URL Rewriting的概念,在前端顯示不同的URL,然後由網絡服務器實際處理該URL。

2

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腳本或處理程序。