如果所有CMS(Drupal,MediaWiki)只是后台的PHP或ASP集合,那么它们如何在 www.example.com/directory/ 或 www上显示页面.example.com / File_name 没有扩展名或其他内容?
这是一些.HTACCESS配置吗?蟒蛇? Perl的?怎么办?
我如何为我的服务器/网站执行此操作?(不使用CMS?)
答案 0 :(得分:6)
答案 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 module或AcceptPathInfo
directive提供了类似的功能。