> 백엔드 개발 > PHP 튜토리얼 > 奇怪的URL,何位神仙解释下这个URL

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

WBOY
풀어 주다: 2016-06-13 12:25:54
원래의
1111명이 탐색했습니다.

奇怪的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规则。

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿