【问题标题】:websites urls without file extension?没有文件扩展名的网站网址?
【发布时间】:2010-09-24 06:40:18
【问题描述】:

当我查看 Amazon.com 并看到他们的网页 URL 时,它的 URL 末尾没有 .htm.html.php

就像:
http://www.amazon.com/books-used-books-textbooks/b/ref=topnav_storetab_b?ie=UTF8&node=283155

为什么以及如何?这是什么扩展?

【问题讨论】:

  • +1 因为我记得几年前曾想过同样的问题;)

标签: url-rewriting


【解决方案1】:

您的浏览器不关心文件的扩展名,只关心服务器报告的内容类型。 (好吧,除非您使用 IE,因为在 Microsoft,他们认为他们比您更了解您所提供的服务)。如果您的服务器报告提供的内容是 Content-Type: text/html,那么无论文件名是什么,您的浏览器都应该将其视为 HTML。

【讨论】:

    【解决方案2】:

    通常,它是使用某种描述的 URL 重写方案来实现的。基本概念是,网络应该转向使用适当的 URI 来寻址资源,而不是泄露实现细节的经典旧 URL,因此容易受到未来变化的影响。

    在 Tim Berners-Lee 的文章 Cool URIs Don't Change 中可以找到对该主题的全面讨论,该文章主张减少 URI 中不相关的内容,以帮助避免在实现发生变化时出现的问题,以及当资源确实移动到不同的 URL 时。文章本身包含有关规划 URI 方案的一般建议,非常值得一读。

    【讨论】:

      【解决方案3】:

      比大多数这些答案更具体:

      Web 内容不使用文件扩展名来确定所提供的文件类型(除非您是 Internet Explorer)。相反,他们使用Content-type HTTP 标头,该标头在图像内容、HTML 页面、下载或其他内容之前通过网络发送。例如:

      Content-type: text/html
      

      表示您正在查看的页面应该被解释为 HTML,并且

      Content-type: image/png
      

      表示该页面是PNG图像。

      如果文件是直接从磁盘提供的,Web 服务器通常使用文件扩展名确定分配什么 Content-type,但 Web 应用程序也可以生成带有任何他们喜欢的 Content-type 的页面作为响应到一个请求。无论文件名的结构还是扩展名,只要页面的实际内容与声明的Content-type匹配,数据就会按预期呈现。

      【讨论】:

        【解决方案4】:

        对于使用 Apache 的网站,他们可能正在使用 mod_rewrite,这使他们能够重写 URL(并使它们对用户和 SEO 更友好)

        您可以在这里阅读更多内容http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html 在这里http://www.sitepoint.com/article/apache-mod_rewrite-examples/

        编辑:还有用于 IIS 的重写模块。

        【讨论】:

        • +1 是的,肯定是 mod_rewrite 或类似的模块,具体取决于他们的服务器软件
        • 请注意,Amazon 运行一个称为“obidos”的自定义 Web 应用程序服务器。
        • @Rob,不知道他们有一个自定义网络应用程序...thnx
        【解决方案5】:

        传统上,文件扩展名代表正在服务的文件。

        例如

        http://someserver/somepath/image.jpg

        后来使用相同的方法允许脚本处理参数

        http://somerverser/somepath/script.php?param=1234&other=7890

        在这种情况下,该文件是一个处理“请求”并呈现动态创建文件的 php 脚本。

        如今,应用程序比这复杂得多(即您提到的亚马逊)

        然后没有一个单一的脚本来处理请求(但是一个更复杂的应用程序有几个文件/方法/函数/对象等),并且 url 更像是一个 web 应用程序的入口点(它可能有后面有一个脚本,但那是另一回事)所以现在像亚马逊这样的网络应用程序,是的,stackoverflow 不会在 URL 中显示文件,但是任何即将到来的内容都由服务器端的应用程序处理。

        websites urls without file extension?

        这里我questions代表webapp,322747参数

        我希望这个小小的解释可以帮助您更好地理解所有其他答案。

        【讨论】:

          【解决方案6】:

          那么在目录中有一个 index.html 文件,然后在浏览器中输入路径怎么样?我看到我的 Firefox 和 IE7 都自动输入了斜杠,我不必输入它。这更适合像我这样不认为地球上的每个 url 都应该调用 php、perl、cgi 和 10,000 个其他应用程序来发送几千字节数据的人。

          【讨论】:

            【解决方案7】:

            很多人正在使用更“RESTful”类型的架构......或者至少是类似 REST 的 URL。

            此网站 (StackOverflow) 不显示文件扩展名...它使用的是 ASP.NET MVC

            【讨论】:

              【解决方案8】:

              根据您的服务器设置,您可以使用(或不使用)任何您想要的扩展。您甚至可以将扩展名设置为“.JamesRocks”,但这不会很有帮助:)

              无论如何,万一你是网络编程的新手,最后所有的乱码都是 GET 操作的参数,而不是页面的扩展名。

              【讨论】:

                【解决方案9】:

                很多帖子都提到了这个,我会权衡一下。它绝对是一个 URL 重写系统,许多平台都有实现这一点的方法。

                我曾为一些较大的电子商务网站工作过,现在它已成为网络形象中非常重要的一部分,并提供了许多优势。

                我建议采用您想要使用的技术,并研究该平台的 URL 重写机制示例。例如,对于 .NET,有 google 'asp.net url rewriting' 或使用像 MVC 这样的附加框架,它可以开箱即用地执行此功能。

                【讨论】:

                  【解决方案10】:

                  在 Django(python 的 Web 应用程序框架)中,您自己设计 URL,独立于任何文件名,甚至服务器上的任何路径。

                  你只是说“我希望/news/<number>/ urls 被这个函数处理”

                  【讨论】:

                    猜你喜欢
                    • 2011-04-07
                    • 2014-12-14
                    • 1970-01-01
                    • 2012-12-11
                    • 2019-02-08
                    • 2011-09-25
                    • 1970-01-01
                    • 2011-04-02
                    • 1970-01-01
                    相关资源
                    最近更新 更多