2009-01-11 45 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脚本或处理程序。

相关问题