如果所有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