CMS如何在目录或普通文件名中显示页面?

时间:2009-01-11 15:10:22

标签: url-rewriting content-management-system

如果所有CMS(Drupal,MediaWiki)只是后台的PHP或ASP集合,那么它们如何在 www.example.com/directory/ www上显示页面.example.com / File_name 没有扩展名或其他内容?

这是一些.HTACCESS配置吗?蟒蛇? Perl的?怎么办?

我如何为我的服务器/网站执行此操作?(不使用CMS?)

5 个答案:

答案 0 :(得分:6)

您在URL Rewriting之后。它使Web服务器能够显示URL的内容,这些URL既不直接映射到文件系统中的内容,也不映射到特定的动态内容处理程序(这是通常用于提供内容的两种标准方式)。

答案 1 :(得分:2)

Web服务器只是一个用于侦听传入请求的软件,当它获得一个请求时,它会发回某种响应。

传统上,服务器(例如,服务于普通HTML文件的Apache / IIS)会查看传入请求,在其本地文件系统上找到相应的文件(例如,对于/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脚本或处理程序。 / p>

答案 2 :(得分:1)

如果您正在使用Apache,请查看DirectoryIndex指令以更改要为目录显示的默认文件。

CMS倾向于使用URL re-writing来获取用户友好的网址,而不必在URI上包含文档ID。

答案 3 :(得分:1)

没有扩展名的路径是您在网络服务器级别设置的。在IIS中,您可以使用wildcard application mapping。基本上所有请求都会转到您指定的ISAPI扩展。在Apache你可以使用Roland他的建议。

这些类型的应用程序中的大多数还使用一个名为URL Rewriting的概念,在前端显示不同的URL,然后是网络服务器实际处理的URL。

答案 4 :(得分:1)

大多数网络服务器都有rewrite engines。这些允许您在内部或外部重写/重定向某些请求到其他URL。

对于Apache,mod_rewrite moduleAcceptPathInfo directive提供了类似的功能。