Home >Backend Development >PHP Tutorial >奇怪的URL,何位神仙解释下这个URL

奇怪的URL,何位神仙解释下这个URL

WBOY
WBOYOriginal
2016-06-13 12:25:541105browse

奇怪的URL,哪位神仙解释下这个URL
刚进入一个php项目, 系统中有个页面转向,浏览器地址栏中显示的URL如下:
http://xxx.com/index.php/member-orderPayments-2015071611557932.html

非常不理解, http://xxx.com/index.php/ 到这里为止, 已经定义到一个资源了,但是为什么后面还有一个资源:member-orderPayments-2015071611557932.html
各位神仙给解释下,这是为啥子啊。
注:
访问上述URL, 系统正常运行,没有错误。
而且, 无论我输入URL :http://xxx.com/index.php/ 
还是URL : http://xxx.com/index.php/member-orderPayments-2015071611557932.html
系统都能够正确运行, 当然了,他会转向不同的页面。

我只是无法理解浏览器如何分析这个URL, 请各位不吝赐教。


------解决思路----------------------
应该使用了 URL重写(UrlRewrite) 技术,通俗点说就是 伪静态

一般url传递参数(?号后面即是参数)
http://xxx.com/index.php/member.html?orderPayments=2015071611557932

----------------------------------
UrlRewrite
http://xxx.com/index.php/member-orderPayments-2015071611557932.html

由程序来解析下面的字符串获得参数
member-orderPayments-2015071611557932
------解决思路----------------------
http://xxx.com/index.php/abc
这个url打开的资源 还是 http://xxx.com/index.php
然后 /abc 是作为一个参数 被index.php里面的代码接收到,然后作出处理,
这个就是框架的单入口处理。

如果加上urlwrite以后 
http://xxx.com/abc
还是会交给 http://xxx.com/index.php来处理,/abc 当作参数
------解决思路----------------------
这样做的目的,可能是为了做做搜索引擎优化方便收录或者让地址更好看
倒是不需要使用urlrewrite(用也可以,如果用urlrewrite,中间的index.php就可以进一步去掉了)

echo "<pre class="brush:php;toolbar:false">";<br />preg_match('/\/([a-z0-9A-Z]+)\-([a-z0-9A-Z]+)\-([0-9]+)\.html/',$_SERVER['PATH_INFO'],$values);<br />print_r($values);<br />echo "
";


Array<br />(<br />    [0] => /member-orderPayments-2015071611557932.html<br />    [1] => member<br />    [2] => orderPayments<br />    [3] => 2015071611557932<br />)

------解决思路----------------------
用这种方式的主要原因是,php本身支持这种表达方式用$_SERVER['PATH_INFO']就可以获取index.php/后面的字串段,不需要任何对服务器进行设置,看起来就像是用了reWrite了的伪静态路径一样,因为如果真正的ReWrite,是需要服务器本身支持才行,并且还要写ReWrite规则。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn