扫码关注官方订阅号
偶然发现php文件后还能跟路径。例如:
http://forum.sunhb.me/index.php/admin
请问这是如何实现的,如何写代码?谢谢。(初学者,请耐心回答,谢谢)
闭关修行中......
大多数用php实现的应用, 都是单一入口, 即把所有对该应用的请求, 对转发到入口文件(index.php, app.php)等,
php
比如你现在的这个问题segmentfault,你还可以这样来访问 https://segmentfault.com/index.php/q/1010000005985468
segmentfault
把所有请求都转发到单一入口, 有利于面向对象php框架的设计, 也有利于URL美化。 上面的那个URL肯定是不要index.php的好看多了吧
如nginx的请求转发
nginx
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; } }
以上nginx的配置就是把所有请求都转发到app.php
app.php
apache的配置
apache
Apache常用.htaccess 文件来重写URL
.htaccess
Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L]
以上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']来进行脚本执行。
$_SERVER['REQUEST_URI']
像http://forum.sunhb.me/index.php/admin可能会解析为http://forum.sunhb.me/index.php?controller=admin这样就会读取admin模块的首页了
http://forum.sunhb.me/index.php?controller=admin
当然只这么做会在URL上显示index.php,不太美观,对SEO也不友好。通常会加上服务器的rewrite操作。
PS:初学者的话可以参考一下ThinkPHP的路由,有个大概的理解。当然也不要太依赖TP框架
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
大多数用
php实现的应用, 都是单一入口, 即把所有对该应用的请求, 对转发到入口文件(index.php, app.php)等,比如你现在的这个问题
segmentfault,你还可以这样来访问 https://segmentfault.com/index.php/q/1010000005985468把所有请求都转发到单一入口, 有利于面向对象php框架的设计, 也有利于URL美化。 上面的那个URL肯定是不要index.php的好看多了吧
如
nginx的请求转发以上nginx的配置就是把所有请求都转发到
app.phpapache的配置Apache常用
.htaccess文件来重写URL以上Apache配置吧所有请求转发到index.php
无论是那种方式, 目的都是为了隐藏应用的入口文件(index.php ...), 使你访问https://segmentfault.com/index.php/q/1010000005985468 和https://segmentfault.com/q/1010000005985468
都得到同样的效果, 对客户URL友好又不暴露自己的应用设计细节
WebServer的rewrite功能。
当然有个index.php不好看,应该是:
这是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框架