这两种类型的URL有什么区别?

时间:2011-06-21 12:58:23

标签: php asp.net url

当我注意到这一点时,我正在开发一个网络爬虫。

网址1:http://www.techwyse.com/services/

网址2:http://www.techwyse.com/contact-us.php

网址1没有像HTML或aspx这样的扩展名。但是它显示了一个页面。是否可以知道正在显示的页面的确切名称? (它不会显示在浏览器中)

我们称这些网址为URL2?

先谢谢

7 个答案:

答案 0 :(得分:1)

http://www.techwyse.com/services/表示网络服务器上的文件夹,而http://www.techwyse.com/contact-us.php表示网络服务器上的实际文件。

当您请求文件夹时,基本上可以发生4件事情:

  1. 配置为具有“默认文件”的网络服务器,如index.html,default.asp,index.php以及其中一个。
  2. 网络服务器未找到“默认”文件并启用了文件夹浏览,您实际上可以看到所有文件和子文件夹
  3. 没有默认文件且文件夹浏览已禁用,您将看到错误消息“文件夹浏览已禁用”
  4. 使用SEO,网络服务器在内部将该URL引用到特定文件。

答案 1 :(得分:0)

这是通过URL重写来完成的 http://msdn.microsoft.com/en-us/library/ms972974.aspx

答案 2 :(得分:0)

这叫做SEO friendly urls

使用apache模块可以实现的PHP mod_rewrite

编辑:没有通过发布的链接。

这里的服务是目录,因此在DirectoryIndex文件中设置httpd.conf的文件名(通常是index.php但可以更改)将被执行。

您也可以使用.htaccess更改该文件。

让我们做一个快速测试来理解这一点。

services目录中创建一个文件并为其命名(例如test.php

创建.htaccess文件并添加以下行

DirectoryIndex test.php

然后转到http://www.techwyse.com/services/

您现在会看到test.php文件已被执行而不是index.php

答案 3 :(得分:0)

URL 1:只调用服务器上的目录,Web服务器提供默认文档。

在这种情况下,它是http://www.techwyse.com/services/index.php(与网址1相同的页面)。您可以通过打开返回404的http://www.techwyse.com/services/index2.php来尝试这不是巧合。

答案 4 :(得分:0)

  

网址1没有像HTML或aspx这样的扩展程序。但它显示一个页面。是否可以知道正在显示的页面的确切名称? (它不会显示在浏览器中)

页面名称将是<title>元素内的文本(假设是HTML文档)。无法知道文件名,或者即使有文件开头也是如此。 URL解析为资源以及HTTP服务器如何确定资源是HTTP服务器的实现细节,与客户端完全无关。

(轶事时间:一位朋友对他的大学不满意他的HTTP服务器的内容并忽略robots.txt指令并不感兴趣,所以他编写了一个脚本来生成包含随机链接的随机HTML文档,让它花费几个天数在random.py生成资源的随机网址上完全无意义。无法知道random.py是从服务器外部调用random.py的(甚至是它存在的,虽然相对容易推断))。

确切的网址 http://www.techwyse.com/services/(可能还有其他网址可以解析为相同的资源,但是其中的网址是书面的。)

  

我们称这些网址为URL2?

网址。 (如果你真的想区分它们,你可以说“带有看似文件名的网址”)。

答案 5 :(得分:0)

第一个URL由mod_rewrite或Java servlet(可以映射到任何路径)处理,或者它只是一个目录索引。大多数Web服务器都允许您在目录中放置具有给定(通常是可配置的)名称的页面,例如index.html或index.php,并且默认情况下会加载该页面。因此,例如,www.mysite.com/实际上加载了www.mysite.com/index.html。这也适用于子目录。

答案 6 :(得分:0)

您提到的第一种URL可能是通过在名为“services”的目录中只有一个名为“index”的文件来创建的。如果URL未指定文件,则大多数Web服务器将默认查找文件名“index”。

考虑到第二个示例是带有PHP扩展名的文件,第一个URL引用的文件很可能是“index.php”。