首页 > 后端开发 > 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
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板