> 백엔드 개발 > PHP 튜토리얼 > PHP 파일 다음의 경로를 따라가는 방법은 무엇입니까?

PHP 파일 다음의 경로를 따라가는 방법은 무엇입니까?

WBOY
풀어 주다: 2016-08-04 09:21:22
원래의
1393명이 탐색했습니다.

偶然发现php文件后还能跟路径。
例如:

http://forum.sunhb.me/index.php/admin

请问这是如何实现的,如何写代码?谢谢。
(初学者,请耐心回答,谢谢)

回复内容:

偶然发现php文件后还能跟路径。
例如:

http://forum.sunhb.me/index.php/admin

请问这是如何实现的,如何写代码?谢谢。
(初学者,请耐心回答,谢谢)

大多数用php实现的应用, 都是单一入口, 即把所有对该应用的请求, 对转发到入口文件(index.php, app.php)等,

比如你现在的这个问题segmentfault,你还可以这样来访问 https://segmentfault.com/index.php/q/1010000005985468

把所有请求都转发到单一入口, 有利于面向对象php框架的设计, 也有利于URL美化。 上面的那个URL肯定是不要index.php的好看多了吧

nginx的请求转发

<code class="bash">    location {
        if (!-e $request_filename ){
            rewrite ^/(.*)  /app.php?$1 last;
        }
        
        location ~ \.php$ {
            fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
            fastcgi_index    index.php;
            fastcgi_param    SCRIPT_FILENAME $request_filename;
            include          fastcgi_params;
         }
    }
</code>
로그인 후 복사

以上nginx的配置就是把所有请求都转发到app.php

apache的配置

Apache常用.htaccess 文件来重写URL

<code class="bash">Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</code>
로그인 후 복사

以上Apache配置吧所有请求转发到index.php

无论是那种方式, 目的都是为了隐藏应用的入口文件(index.php ...), 使你访问https://segmentfault.com/index.php/q/1010000005985468 和https://segmentfault.com/q/1010000005985468
都得到同样的效果, 对客户URL友好又不暴露自己的应用设计细节

WebServer的rewrite功能。
当然有个index.php不好看,应该是:

http://forum.sunhb.me/admin

这是PHP一个路由实现。在index.php中通过解析$_SERVER['REQUEST_URI']来进行脚本执行。

http://forum.sunhb.me/index.php/admin可能会解析为http://forum.sunhb.me/index.php?controller=admin这样就会读取admin模块的首页了

当然只这么做会在URL上显示index.php,不太美观,对SEO也不友好。通常会加上服务器的rewrite操作。

PS:初学者的话可以参考一下ThinkPHP的路由,有个大概的理解。当然也不要太依赖TP框架

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