HTTP 协议中url uri 区别和 URL 有什么区别

协议和技术细节 : 豌豆荚开发者中心
协议和技术细节
第一步:使 App 支持外部调起
为了使用户能够从豌豆荚的搜索结果中打开应用内容,开发者需要使 App 支持外部调用。豌豆荚使用 AppURL 来指向一个可以在 App 中展现的资源,AppURL 的格式:
{scheme}://{host_path}
制定统一的 URI 指向 App 的内容
我们推荐开发者将 scheme 设为 app_name,将 host_path 设为 page/type/id,也就是使用 app_name://page/type/id 的方式来指向 App 的内容。例如,一个优酷的视频播放页可以被描述为:youku://play/video/12321;一个多看的电子书详情页可以被描述为:duokan://detail/ebook/21312。
在 Android Manifest 文件中注册 intent-filter
对于一个可以展示 {app_name}://{page}/{type}/{id} 所指向资源的 activity 添加如下 intent-filter:
&intent-filter&
&action android:name="android.intent.action.VIEW" /&
&category android:name="android.intent.category.DEFAULT" /&
&!-- 处理以"app_name://page/type"开头的 URI --&
&data android:scheme="app_name" /&
&data android:host="detail" /&
&data android:path="/type" /&
&/intent-filter&
&intent-filter&&&&&&action android:name="android.intent.action.VIEW" /&&&&&&category android:name="android.intent.category.DEFAULT" /&&&&&&!-- 处理以"app_name://page/type"开头的 URI --&&&&&&data android:scheme="app_name" /&&&&&&data android:host="detail" /&&&&&&data android:path="/type" /&&/intent-filter&
使用 am 指令进行测试
通过如下指令测试调起,如果能够正确地调起页面展示数据则说明 intent-filter 设置成功。
adb shell am start -W -a "android.intent.action.VIEW" -d "yourUri" yourPackageName
adb shell am start -W -a "android.intent.action.VIEW" -d "yourUri" yourPackageName
第二步:描述 App 内容
内容是指 IAS(In App Search, 应用内搜索) 检索和展现的内容对象,同时,也是各个 App 提供给用户消费的对象。例如某一个视频就是一个典型的内容。我们将内容称为 Item,这两个概念可以互换。
一个 Item 通常包含一系列的属性,例如一部电影至少有标题、导演、演员、电影简介等等属性。而对于一部电子书或者一张图片,其包含的属性则不尽相同。
如何描述 App 内容
豌豆荚 IAS 使用
标准来描述一个 Item。Microdata 是 Google、Bing 和 Yahoo 都支持的结构化数据标注方案,也是 HTML5 的标准,同时也可以用 XML 来表示。下面的例子我们用 XML 来描述电影《环太平洋》:
&xhtml:span itemscope="true" itemtype="http://schema.org/Movie"&
&xhtml:span itemprop="name"&环太平洋&/xhtml:span&
&xhtml:span itemprop="description"&有一个名叫"凯由"的滔天外来生物从海上崛起,并且引起一场战争,这场浩劫将威胁到数百万计的人类的生命和...&/xhtml:span&
&xhtml:span itemprop="director" itemscope="true" itemtype="http://schema.org/Person"&
&xhtml:span itemprop="name"&吉尔莫·德尔·托罗&/xhtml:span&
&/xhtml:span&
&xhtml:span itemprop="actor" itemscope="true" itemtype="http://schema.org/Person"&
&xhtml:span itemprop="name"&朗·普尔曼&/xhtml:span&
&/xhtml:span&
&xhtml:span itemprop="aggregateRating" itemscope="true" itemtype="http://schema.org/AggregateRating"&
&xhtml:span itemprop="ratingValue"&8&/xhtml:span&
&xhtml:span itemprop="bestRating"&10&/xhtml:span&
&xhtml:span itemprop="ratingCount"&200&/xhtml:span&
&xhtml:span itemprop="reviewCount"&50&/xhtml:span&
&/xhtml:span&
&/xhtml:span&
12345678910111213141516
&xhtml:span itemscope="true" itemtype="http://schema.org/Movie"&&&&&&xhtml:span itemprop="name"&环太平洋&/xhtml:span&&&&&&xhtml:span itemprop="description"&有一个名叫"凯由"的滔天外来生物从海上崛起,并且引起一场战争,这场浩劫将威胁到数百万计的人类的生命和...&/xhtml:span&&&&&&xhtml:span itemprop="director" itemscope="true" itemtype="http://schema.org/Person"&&&&&&&&&&xhtml:span itemprop="name"&吉尔莫·德尔·托罗&/xhtml:span&&&&&&/xhtml:span& &&&&&xhtml:span itemprop="actor" itemscope="true" itemtype="http://schema.org/Person"&&&&&&&&&&xhtml:span itemprop="name"&朗·普尔曼&/xhtml:span&&&&&&/xhtml:span&&&&&&xhtml:span itemprop="aggregateRating" itemscope="true" itemtype="http://schema.org/AggregateRating"&&&&&&&&&&xhtml:span itemprop="ratingValue"&8&/xhtml:span&&&&&&&&&&xhtml:span itemprop="bestRating"&10&/xhtml:span&&&&&&&&&&xhtml:span itemprop="ratingCount"&200&/xhtml:span&&&&&&&&&&xhtml:span itemprop="reviewCount"&50&/xhtml:span&&&&&&/xhtml:span&&/xhtml:span&
下面是几个属性的说明:
属性的名字
取值为 true 或者 false
带有 itemscope 的属性是特殊类型(有自己的属性),例如 Person
属性的类型
只有在 itemscope 出现的时候需要指定。itemtype 的值为 “http://schema.org/{type}”,其中 {type} 是该属性的类型。例如,actor 属性的类型是 Person,那么 actor 对应的 itemtype="http://schema.org/Person"
为了方便各类内容顺利接入 IAS,豌豆荚对一些特定种类的内容会给出明确的数据组织标准,也就是定义其应该包含哪些属性。对于其余类别,豌豆荚提供了一个通用的数据组织标准。具体细节请阅读以及。
列出了不同种类的 Item 分别用 XML 格式表示的示例。
第三步:提交 AppURL 和 App 内容等信息
在完成了上述步骤后,开发者需要通过将以下信息提交给豌豆荚:
需要提交的信息
App 内容的 URI
packageName
应用的包名
minVersion
支持从外部调用的最小版本号
我们提供了一种扩展的 让开发者提交这些信息。下面是一个例子:
&?xml version="1.0" encoding="UTF-8"?&
&urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:ias="/ias/schemas/1.0" xmlns:xhtml="http://www.w3.org/1999/xhtml"&
&ias:app minVersion="489" packageName="com.example.android"/&
&loc&/xxx.html&/loc&
&lastmod&&/lastmod&
&xhtml:link href="example://play/movie/xxx" rel="alternate"/&
&xhtml:span itemscope="true" itemtype="http://schema.org/Movie"&
&xhtml:span itemprop="name"&环太平洋&/xhtml:span&
&xhtml:span itemprop="description"&有一个名叫&凯由&的滔天外来生物从海上崛起...&/xhtml:span&
&/xhtml:span&
12345678910111213
&?xml version="1.0" encoding="UTF-8"?&&urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:ias="/ias/schemas/1.0" xmlns:xhtml="http://www.w3.org/1999/xhtml"&&&&&&ias:app minVersion="489" packageName="com.example.android"/&&&&&&url&&&&&&&&&&loc&/xxx.html&/loc&&&&&&&&&&lastmod&&/lastmod&&&&&&&&&&xhtml:link href="example://play/movie/xxx" rel="alternate"/&&&&&&&&&&xhtml:span itemscope="true" itemtype="http://schema.org/Movie"&&&&&&&&&&&&&&xhtml:span itemprop="name"&环太平洋&/xhtml:span&&&&&&&&&&&&&&xhtml:span itemprop="description"&有一个名叫&凯由&的滔天外来生物从海上崛起...&/xhtml:span&&&&&&&&&&/xhtml:span&&&&&&/url&&/urlset&
下面是几个标签的说明:
描述包名和支持从外部调用的最小版本
属于扩展协议,豌豆荚自定义的标签。packageName 描述包名,minVersion 描述支持从外部调用的最小版本。如果应用有多个版本,比如非 HD 版和 HD 版,可以用多个 ias:app 标签来表示
包含 AppURL 和 Item 内容
属于标准的 Sitemap 协议,可重复
描述的是 WebURL 地址,也就是一个 web 页面的地址
属于标准的 Sitemap 协议
描述的是 App 内容最后一次修改的时间
属于标准的 Sitemap 协议
xhtml:link
描述的是 WebURL 对应的 AppURL
属于扩展协议,使用了标准的 XHTML 协议
xhtml:span
描述的是一个 Item
属于扩展协议,使用了标准的 XHTML 协议
一个 Sitemap 文件中可以描述多个 Item,具体请参考 。Sitemap 文件的大小建议不超过 30MB。
如果应用内的内容不多,开发者可以使用一个 Sitemap 文件描述所有的内容,然后提供该 Sitemap 文件的 url 给豌豆荚即可。
如果 App 内容较多,导致单个 Sitemap 文件过大;或者每天更新的数据量比较大,App 内容提供方希望把更新的数据单独列出来,那么开发者可以将 App 内容用多个 Sitemap 文件描述,然后将这些 Sitemap 文件的地址保存在一个 中。这样开发者只需要提供该 Sitemap 索引文件的 url,不再需要单独提供 Sitemap 文件的 url。
豌豆荚支持的其他标准
同时我们也支持 Google 的 App Indexing 标准和 Quixey 的 AppURL 标准。
Google 的 App Indexing 标准
豌豆荚的标准基本上兼容 Google 的 App Indexing 标准,区别在于:Google 的 App Indexing 标准对 AppURL 的定义是:
android-app://{package_name}/{scheme}/{host_path}
同时还支持开发者在一个 Web 页面使用 link 标签来标识此 Web 页面对应的 AppURL。例如:
&link rel="alternate" href="android-app://com.dianping/shop/" /&
&body& … &/body&
&html&&head&&&...&&&link rel="alternate" href="android-app://com.dianping/shop/" /&&&...&/head&&body& … &/body&
这样就通过 link 标签定义了此 Web 页面对应的 AppURL。然后开发者可以在此页面中加入 Microdata 的标签来描述对应的 Item。这种方式要求 App 的所有内容都必须有对应的 Web 页面,好处是不再需要提交另外的数据。
详细信息请阅读:
Quixey 的 AppURL 标准
Quixey 的 AppURL 是一个跨平台的描述应用内资源的方案,跟 Google 的 App Indexing 类似,AppURL 也是建立了 Web 地址和 App 内容之间的对应关系,只是描述方式不一样而已。
开发者需要在自己的网站下面放置一个 appurl.json 文件,这个文件描述了 Web 地址和 AppURL 的对应规则,以及在不同平台上应用的版本信息等等。例如:你有一个域名为
的网站,你需要将以
开头的 URL 映射成移动应用中的内容。你需要做的就是在网站根目录下放置一个名为 appurl.json 的文件。文件内容是:
"name": "Example",
"webPrefix": "",
"nativePrefix": "custom:///",
"transforms": [
"web": "search?find_doc={query}",
"native": "search?terms={query}"
1234567891011
{&&&&"name": "Example",&&&&"webPrefix": "",&&&&"nativePrefix": "custom:///",&&&&"transforms": [&&&&&&&&{&&&&&&&&&&&&"web": "search?find_doc={query}",&&&&&&&&&&&&"native": "search?terms={query}"&&&&&&&&}&&&&]}
详细信息请阅读:
采用这两种标准的开发者,我们建议其使用 Microdata 对 Web 页面进行描述,这样可以帮助豌豆荚更好地检索和展现内容。由于 Microdata 可以直接使用
HTML 属性来标注,因此对于有 Web 站点的开发者,只需要在原有网页上进行少量修改就可以达到结构化数据标注的效果。
假设有一个电影网站,电影《环太平洋》详情页的部分 HTML 代码如下:
&h1&环太平洋&/h1&
有一个名叫"凯由"的滔天外来生物从海上崛起,并且引起一场战争,这场浩劫将威胁到数百万计的人类的生命和...
&div&导演: 吉尔莫·德尔·托罗&/div&
&div&主演: 朗·普尔曼&/div&
&div&来自200个用户的评分: 8/10 总评论数: 50&/div&
&h1&环太平洋&/h1&&div&有一个名叫"凯由"的滔天外来生物从海上崛起,并且引起一场战争,这场浩劫将威胁到数百万计的人类的生命和...&/div&&div&导演: 吉尔莫·德尔·托罗&/div&&div&主演: 朗·普尔曼&/div&&div&来自200个用户的评分: 8/10 总评论数: 50&/div&
我们加入相关的 Microdata 标签来对这个电影进行描述:
&div itemscope itemtype="http://schema.org/Movie"&
&h1 itemprop="name"&环太平洋&/h1&
&span itemprop="description"&有一个名叫"凯由"的滔天外来生物从海上崛起,并且引起一场战争,这场浩劫将威胁到数百万计的人类的生命和...&/span&
&div itemprop="director" itemscope itemtype="http://schema.org/Person"&
&span itemprop="name"&吉尔莫·德尔·托罗&/span&
&div itemprop="actor" itemscope itemtype="http://schema.org/Person"&
&span itemprop="name"&朗·普尔曼&/span&
&div itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating"&
来自&span itemprop="ratingCount"&200&/span& 个用户.
的评分:&span itemprop="ratingValue"&8&/span&/&span itemprop="bestRating"&10&/span&
总评论数: &span itemprop="reviewCount"&50&/span&.
1234567891011121314151617
&div itemscope itemtype="http://schema.org/Movie"&&&&h1 itemprop="name"&环太平洋&/h1&&&&span itemprop="description"&有一个名叫"凯由"的滔天外来生物从海上崛起,并且引起一场战争,这场浩劫将威胁到数百万计的人类的生命和...&/span&&&导演:&&&div itemprop="director" itemscope itemtype="http://schema.org/Person"&&&&&&span itemprop="name"&吉尔莫·德尔·托罗&/span&&&&/div&&&主演:&&&div itemprop="actor" itemscope itemtype="http://schema.org/Person"&&&&&&span itemprop="name"&朗·普尔曼&/span&&&&/div&&&&div itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating"&&&&&来自&span itemprop="ratingCount"&200&/span& 个用户.&&&&的评分:&span itemprop="ratingValue"&8&/span&/&span itemprop="bestRating"&10&/span&&&&&总评论数: &span itemprop="reviewCount"&50&/span&.&&&/div&&/div&
这样只要稍作修改,就可以在同样的 Web 页面提供结构化的信息,完成了对这个电影 Item 的描述。从而帮助豌豆荚更好地检索和展现内容。
如果您需要更多帮助,请在此提交,我们将在 1 个工作日内回复。
获得帮助或提供反馈
邮件支持:
企业 QQ:400 652 8705HTTP = Hyper Text Transfer ProtocolURI = Universal Resource IdentifierURL = Universal Resource Locator类似问题:
从鄙人程序员的角度理解,URI属于URL更低层次的抽象,一种字符串文本标准。就是说,URI属于父类,而URL属于URI的子类。URL是URI的一个子集。在《HTTP权威指南》一书中,对于URI的定义是:统一资源标识符;对于URL的定义是:统一资源定位符。二者的区别在于,URI表示请求服务器的路径,定义这么一个资源。而URL同时说明要如何访问这个资源(http://)。例如,一个URL通常包括三部分:方案部分(scheme):http://地址部分:资源部分:/1.png而在C#中,URL类属于System.Security.Policy命名空间,Uri属于System。在MSDN对Url类的备注中,能更好的说明Url与Uri的区别:Url 证据的存在将在授予集内生成 。如果有对
的 ,则与 Url 证据对应的
将与请求的权限进行比较。考虑完整的 URL,包括协议(HTTP、HTTPS、FTP)和文件。例如, 就是一个完整的 URL。URL 可以精确匹配,也可在最后一个位置使用通配符来匹配。例如,* 就是一个含通配符的 URL。而Uri类在实例化的时候,可以指定为绝对路径,相对路径,但可以不指定到具体的某个资源。那么我理解的二者的区别就是:URI可以表示一个域,也可以表示一个资源。URL只能表示一个资源。
同样的,URN(统一资源名称)也是URI的一个子集,目前没有大规模运用。PS:
URI是一个字符串格式规范
并没有指定它的用途URL是资源定位的规范 包括网址 ftp服务器
URI 在于I(Identifier)是统一资源标示符,可以唯一标识一个资源。&br&URL在于Locater,一般来说(URL)统一资源定位符,可以提供找到该资源的路径,比如&a href=&/question/& class=&internal&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/question/2195&/span&&span class=&invisible&&0864&/span&&span class=&ellipsis&&&/span&&/a&,但URL又是URI,因为它可以标识一个资源,所以URL又是URI的子集。&br&举个是个URI但不是URL的例子:urn:isbn:0-486-27557-4,这个是一本书的isbn,可以唯一标识这本书,更确切说这个是URN。&br&总的来说,&strong&locators are also identifiers&/strong&, so every URL is also a URI, but there are URIs which are not URLs.
URI 在于I(Identifier)是统一资源标示符,可以唯一标识一个资源。URL在于Locater,一般来说(URL)统一资源定位符,可以提供找到该资源的路径,比如,但URL又是URI,因为它可以标识一个资源,所以URL又是URI的子集。举个是个URI但不是U…
&p&&b&从JDK1.5开始&/b&,&/p&&div class=&highlight&&&pre&&code class=&language-text&&java.net包对统一资源定位符
&/code&&/pre&&/div&&br&&div class=&highlight&&&pre&&code class=&language-text&&(uniform resource locator URL)
&/code&&/pre&&/div&&p&和统一资源标识符&/p&&div class=&highlight&&&pre&&code class=&language-text&&(uniform resource identifier URI)
&/code&&/pre&&/div&&p&作了非常明确的区分。&/p&&br&&p&(1)URI是个纯粹的句法结构,用于指定标识Web资源的字符串的各个不同部分。URL是URI的一个特例,它包含了定位Web资源的足够信息。其他URI,比如&/p&&div class=&highlight&&&pre&&code class=&language-text&&mailto:
&/code&&/pre&&/div&&p& 则不属于定位符,因为根据该标识符无法定位任何资源。&/p&&br&&br&&p&&b&URI 是统一资源标识符,而 URL 是统一资源定位符。&/b&因此,笼统地说,每个 URL 都是 URI,但不一定每个 URI 都是 URL。这是因为 URI 还包括一个子类,即统一资源名称 (URN),它命名资源但不指定如何定位资源。上面的 mailto、news 和 isbn URI 都是 URN 的示例。 &/p&&p&URI 和 URL 概念上的不同反映在此类和 URL 类的不同中。 &/p&&br&&p&此类的实例代表由 RFC 2396 定义的语法意义上的一个 URI 引用。URI 可以是绝对的,也可以是相对的。对 URI 字符串按照一般语法进行解析,不考虑它所指定的方案(如果有)不对主机(如果有)执行查找,也不构造依赖于方案的流处理程序。相等性、哈希计算以及比较都严格地根据实例的字符内容进行定义。&b&换句话说,一个 URI 实例和一个支持语法意义上的、依赖于方案的比较、规范化、解析和相对化计算的结构化字符串差不多。 &/b&&/p&&br&&p&&b&作为对照,URL 类的实例代表了 URL 的语法组成部分以及访问它描述的资源所需的信息。URL 必须是绝对的,即它必须始终指定一个方案。&/b&URL 字符串按照其方案进行解析。通常会为 URL 建立一个流处理程序,实际上无法为未提供处理程序的方案创建一个 URL 实例。相等性和哈希计算依赖于方案和主机的 Internet 地址(如果有);没有定义比较。&b&换句话说,URL 是一个结构化字符串,它支持解析的语法运算以及查找主机和打开到指定资源的连接之类的网络 I/O 操作。&/b&&/p&&br&&br&&br&&p&&b&在Java类库中,URI类不包含任何访问资源的方法,它唯一的作用就是解析。&/b&&/p&&br&&p&&b&相反的是,URL类可以打开一个到达资源的流。&/b&&/p&&br&&p&因此URL类只能作用于那些 Java类库知道该如何处理的模式,&/p&&br&&p&例如http:,https:,ftp:,本地文件系统(file:),和Jar文件(jar:)。&/p&&br&&br&&p&&strong&URI—Universal Resource Identifier通用资源标志符&br&&/strong&Web上可用的每种资源如HTML文档、图像、视频片段、程序等都是一个来URI来定位的&br&URI一般由三部组成&br&①访问资源的命名机制&br&②存放资源的主机名&br&③资源自身的名称,由路径表示,着重强调于资源。&/p&&br&&p&&strong&URL—Uniform Resource Location统一资源定位符&br&&/strong&URL是Internet上用来描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上,特别是著名的Mosaic。&br&采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。&br&URL一般由三部组成&br&①协议(或称为服务方式)&br&②存有该资源的主机IP地址(有时也包括端口号)&br&③主机资源的具体地址。如目录和文件名等&/p&&br&&br&&br&&p&应用:&/p&&p&&b&一
、 URI&/b&&/p&&p&比如在JDK中sun公司提供的简易HttpServer实现中&/p&&p&&b&public void handle(final HttpExchange exchange)throws Exception&/b&&/p&&p&&b&方法中,根据exchange对象可以拿到访问Http请求的URI对象,&/b&&/p&&p&&b&ps:&/b&&/p&&div class=&highlight&&&pre&&code class=&language-text&&http://127.0.0.1:8080/cmd_helloworld/?name=guowuxin
&/code&&/pre&&/div&&br&&p&&b&此时URI uri = exchange.getRequestURI();&/b&&/p&&p&&b&通过uri可以拿到连接的各部分内容: &/b&&/p&&p&&b&uri.getPath()
--------------------& /cmd_helloworld
注意有斜杠&/b&&/p&&p&&b&uri.getQuery()----------------------& name=guowuxin&/b&&/p&&br&&p&&b&当然如果是post请求,请求内容在请求body当中&/b&&/p&&br&&p&&b&二、 URL&/b&&/p&&p&&b& 上面说了,&/b&&b&URL 是一个结构化字符串,它支持解析的语法运算以及查找主机和打开到指定资源的连接之类的网络 I/O 操作。&/b&&/p&&p&重要的,URL不仅仅可以进行语法解析运算,还可以查找主机,并且打开指定资源的连接进行网络IO操作。&/p&&br&&p&介绍URL类的两个重要方法&/p&&p&&b&openStream&/b&()
打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream。&br&&/p&&p&&b&openConnection&/b&()
返回一个 URLConnection 对象,它表示到 URL
所引用的远程对象的连接。&br&&/p&&div class=&highlight&&&pre&&code class=&language-text&& URL url = new URL(&&);
InputStream in = url.openStream();
ByteArrayOutputStream output = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = -1;
while ((len = in.read(buffer)) != -1)
output.write(buffer, 0, len);
System.err.println(new String(output.toByteArray()));
&/code&&/pre&&/div&上面的程序通过openStream()方法获取访问URL获取的输入流,从而读取响应内容,ps响应内容是过滤掉响应头了的。&br&&br&openConnection()方法就可以getOutputStream()以及 getInputStream()&br&可以更灵活的进行request和response
从JDK1.5开始,java.net包对统一资源定位符(uniform resource locator URL)和统一资源标识符(uniform resource identifier URI)作了非常明确的区分。(1)URI是个纯粹的句法结构,用于指定标识Web资源的字符串的各个不同部分。URL是URI的一个特例,它包含了…
已有帐号?
无法登录?
社交帐号登录
喜欢装逼,喜欢写代码,喜欢杜甫的诗。详解&$_SERVER&函数中QUERY_STRING和REQUEST_URI区别
实例:1,http://localhost/aaa/&(打开aaa中的index.php)结果:$_SERVER['QUERY_STRING'] = "";$_SERVER['REQUEST_URI']&&= "/aaa/";$_SERVER['SCRIPT_NAME']&&= "/aaa/index.php";$_SERVER['PHP_SELF']&&&&&= "/aaa/index.php";2,http://localhost/aaa/?p=222&(附带查询)结果:$_SERVER['QUERY_STRING'] = "p=222";$_SERVER['REQUEST_URI']&&= "/aaa/?p=222";$_SERVER['SCRIPT_NAME']&&= "/aaa/index.php";$_SERVER['PHP_SELF']&&&&&= "/aaa/index.php";3,http://localhost/aaa/index.php?p=222&q=333结果:$_SERVER['QUERY_STRING'] = "p=222&q=333";$_SERVER['REQUEST_URI']&&= "/aaa/index.php?p=222&q=333";$_SERVER['SCRIPT_NAME']&&= "/aaa/index.php";$_SERVER['PHP_SELF']&&&&&= "/aaa/index.php";由实例可知:$_SERVER["QUERY_STRING"]&&获取查询 语句,实例中可知,获取的是?后面的值$_SERVER["REQUEST_URI"]&&&获取 http://localhost 后面的值,包括/$_SERVER["SCRIPT_NAME"]&&&获取当前脚本的路径,如:index.php$_SERVER["PHP_SELF"]&&&&&&当前正在执行脚本的文件名
WordPress通过301重定向实现非首先域(非www)跳转向本来是一个很简单事情,由于没弄清楚$_SERVER['HTTP_X_REWRITE_URL'] 和$_SERVER['REQUEST_URI']的区别导致了循环重定向问题。现在来具体研究下$_SERVER['HTTP_X_REWRITE_URL'] 和$_SERVER['REQUEST_URI']的区别首先要纠正一部分的观点就是IIS+PHP不支持$_SERVER['REQUEST_URI']不是,不支持是PHP Version 版本的问题,php4.4.0不支持 $_SERVER['REQUEST_URI'],php5.2.5则增加了支持;
$_SERVER['REQUEST_URI']常用来获当前URL例如:/index.php?p=3$_SERVER['REQUEST_URI']获得的就是/index.php?p=3这部分。$_SERVER["HTTP_X_REWRITE_URL"]则在IIS下获得的是当前URL,在apache下的值为空
例如:当前URL:/IIS环境下:$_SERVER['REQUEST_URI'] = /index.php$_SERVER["HTTP_X_REWRITE_URL"] =/apache环境下:$_SERVER['REQUEST_URI'] = /$_SERVER["HTTP_X_REWRITE_URL"] =&
当前URL:/index.phpIIS环境下:$_SERVER['REQUEST_URI'] = /index.php$_SERVER["HTTP_X_REWRITE_URL"] =/index.phpapache环境下:$_SERVER['REQUEST_URI'] = /index.php$_SERVER["HTTP_X_REWRITE_URL"] =&
阅读(...) 评论()}

我要回帖

更多关于 uri和url区别 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信