【问题标题】:Webpages without a file extension没有文件扩展名的网页
【发布时间】:2014-12-14 00:36:54
【问题描述】:

我可以在那个网站上看到网址是http://stackoverflow.com/questions/ask。 之后没有文件扩展名,如果 ask 是一个文件夹,并且其中包含一个 index.aspx,例如,它会显示为 http://stackoverflow.com/questions/ask/
他们是怎么做到的?他们如何使扩展消失? 谢谢,幻影

【问题讨论】:

标签: url web file-extension


【解决方案1】:

他们正在使用一种称为重写规则的东西,可能在网站 Web 根目录的 .htaccess 文件中。他们在 .htaccess 文件中添加了类似的内容

RewriteEngine On # 开启重写引擎

RewriteRule ^ask/?$ questions.php?questionID={1} [NC,L]

【讨论】:

  • 你能解释一下重写规则是什么意思吗?
【解决方案2】:

他们是怎么做到的?他们如何使扩展消失?

扩展并没有消失,只是没有扩展。在最近(比如 15 年)的 Web 编程世界中,Web 应用程序不再是一堆实际文件的实际目录。 Web 应用程序现在有许多不同的体系结构并应用了许多模式。 Web 服务器也可以通过 URL 重写扩展提供这样的功能。两者通常也结合使用。

实现这一点的最常见模式是Front Controller。这个想法是所有请求都进入一个单一的入口点。然后,此入口点可以决定执行哪些代码来生成输出。在大多数 MVC 框架中,前端控制器名称(通常是 index.php)之后的 URI 用于确定要调用哪个控制器类和控制器方法,尽管现在它们通常是可配置的。

http://stackoverflow.com/questions/ask的例子中,一种可能的方案是:

  1. Web 服务器将 URL 重写为 http://stackoverflow.com/index.php/questions/ask
  2. index.php 作为前端控制器,然后分析其名称后的URI段,即/questions/ask
  3. 然后它构造一个类questions 的实例并调用它的ask 方法
  4. 该方法生成输出,然后作为请求的响应发回

【讨论】:

  • 感谢您的回答。我现在明白这个话题了,谢谢!
猜你喜欢
  • 2011-04-02
  • 2012-12-11
  • 2010-09-24
  • 2010-11-10
  • 2016-12-24
  • 2012-12-24
  • 2017-06-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多