如果存在/,则访问哪个文件?网址后


What file is being accessed if there is a /? after the website address?

这听起来可能是个愚蠢的问题,但我必须知道答案。我见过许多使用URL的网站,如下所示:http://www.example.com/?p=1

正在访问什么文件?我总是用这样的东西http://www.example.com/somepage.php?p=1.当"?"本身存在时,这意味着什么?

我最近安装了phpList来处理我的电子邮件活动,该程序将这种类型的URL用于订阅页面。我不知道它在访问什么页面。要查看它的实际操作,您可以访问https://www.mylittleblackebook.com/lists/?p=subscribe&id=3.

提前感谢您提供的任何线索。

这取决于您使用的web服务器。如果您使用的是Apache,那么DirectoryIndex属性就是您要查找的。

这是它的默认值:

DirectoryIndex index.html index.htm default.htm index.php index.php3 index.phtml index.php5 index.shtml mwindex.phtml

默认情况下(如您的示例中所示,没有专门调用的页面),Apache将按照指定的顺序搜索上面列出的每个文件,并使用找到的第一个文件。

参数的处理方式与是否指定文件名的处理方式相同。使用的默认文件将能够读取它们。

默认情况下,您正在访问index.*。所以www.example.comwww.example.com/index.php是一样的。

若要传递任何参数,请使用?作为第一个参数,使用&作为任何其他参数。像www.emaple.com/index.php?p=1&r[0]=2&r[1]=5。由于可以省略index.*,因此可以编写www.example.com/?p=1&r[0]=2&r[1]=5

所以www.example.com/?p=1正在访问index.*文件(很可能是index.php)。

阅读本文以获取更多信息(关于url中的?p1=v1&p2=v2):

http://en.wikipedia.org/wiki/Query_string

示例:

http://www.example.com/?p=1

服务器端的手段:

print_r($_GET); //Array( p => 1)

https://www.mylittleblackebook.com/lists/?p=subscribe&id=3.

服务器端的手段:

print_r($_GET); //Array( p => subscribe, id => 3)

根据这些参数,你会得到什么文件?如果没有根据任何$_GET值的php重定向,则这些参数无关紧要。

首先读取.htaccess文件以了解服务器重定向。如果没有这样的文件,这就是规则:

  • www.site.com --> index.php
  • www.site.com/page -> page.php
  • www.site.com/dir/page -> /dir/page.php

请注意,任何php文件都可以包含重定向,可以使用meta html tag甚至使用JavaScript进行重定向。

当"?"本身存在时,这意味着什么?

它没有额外的意义。(如果需要,可以在$_SERVER['REQUEST_URI']中检测到)