【问题标题】:URLs ending with no page name以无页面名称结尾的 URL
【发布时间】:2014-08-11 02:46:22
【问题描述】:

感谢您阅读我的帖子。

如今,当人们在 Web 浏览器中访问网页时,经常会在导航栏中出现没有页面名称的 URL,例如:

http://www.example.com/foo/

我已经习惯了这些以页面名称结尾的 URL:

http://www.example.com/welcome.html
http://www.example.com/welcome.php
http://www.example.com/welcome.jsp
  • 我熟悉 HTML。
  • 我当前的网站是用 PHP 编写的,我正在维护它。
  • 我目前正在编写 Java Webapps(包括 .jsp 文件)。

在所有这些情况下,URL 都以上面示例中的页面名称结尾。

所以我的问题是:

  • 当 URL 没有以页面名称结尾时,它来自“哪里”?
  • 开发者是否真的用某种机制隐藏了页面名称?
  • 它是一种允许使用没有页面名称的 URL 的特定技术吗?
  • 为什么要这样做?出于安全原因?

我希望我的问题足够清楚。

最好的问候。

【问题讨论】:

  • 这样做的原因之一是为了创建对 SEO 更友好的 URL (techie-buzz.com/how-to/…)
  • 感谢您的回答。我添加了标签“url-rewriting”。我还删除了标签“php”,因为这个问题不是 PHP 特定的(抱歉)。

标签: url url-rewriting


【解决方案1】:

更新答案(感谢 Tim 和 DarkBee)

该网站很可能使用 Apache 的 mod_rewrite 或 IIS URL Rewrite module.

今天被大量使用的一个例子是 MVC 应用程序模式。大多数 MVC 应用程序使用一种特定类型的路由,默认情况下是:

website.com/{controller}/{action}/{id}

然后允许您处理每个变量并相应地处理请求。路径只是抽象的,服务器上没有这样的文件夹结构,它只是为应用程序提供了一组特定的变量,根据这些变量决定显示什么内容。

关于 MVC 的更多信息在这里:http://www.asp.net/mvc

【讨论】:

  • MVC 可以在任何编程环境中使用,它只是一种模式。 MVC使用mod_rewrite true,但是mod_rewrite与MVC无关
  • 感谢您的评论,这也不是绝对正确的,在 IIS 上运行的 MVC 不使用 mod_rewrite,而是使用 IIS 特定的 URL Rewrite 模块。
  • 没错,我应该说 PHP 中的 MVC 使用 mod_rewrite ^^
【解决方案2】:

不管是不是MVC都是url重写。在 apache 中是这样实现的:

RewriteEngine On

RewriteRule    ^step-1/?$                           step1.php    [NC,L] 
RewriteRule    ^step-2/?$                           step2.php    [NC,L]

这意味着当您单击这些链接时,您将看到 step-1 而不是 step-1.php 等等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-28
    • 2020-12-19
    • 2015-11-11
    • 2014-03-14
    • 1970-01-01
    • 2014-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多