宝塔面板部署thinkphp项目时ngix和apach服务器pathinfo的设置
一 前言
宝塔面板无论是对于linux系统还是windows系统,都提供了一键式的部署方案,操作简单,不需要复杂的编程基本功,小白可以完成专业复杂的后端部署。 对于宝塔提供的thinkphp5框架而言,更是大大提高开发效率。今天,针对浏览器访问地址中经常用到的url的pathinfo设置,进行分析总结。
二 pathinfo的概念
pathinfo是thinkphp框架为了url的简化和直观,设定的一种url形式。
今天以最简单的控制品来说明。
举个例如子
http://tp5.com/index/index/index2
域名为http://tp.com 访问模块为index 控制器为index 方法为index2
tp5中的方法如下:
index2方法可以带参数,那么加一个参数看下效果
http://tp5.com/index/index/index2/a/我要给变量a传一个参数
看到这里,tp5的url传参是直接在方法名后/变量/变量值
这就是pathinfo!!!
那么,抛开tp5的pathinfo,tp3与传统兼容模式,对是复杂的url传参,非常不友好,也不利于seo.
今天要说的重点不是tp5的操作,而是宝塔面板在部署时,遇到的path设置问题。
三 ngix服务器pathinfo
宝塔服务器自带的一键部署tp5的pathinfo正常,ngix版本为1.8.
但是如果从tp5官网下载的框架拷贝到宝塔网站中,path失效,经对比发现问题所在,点开网站设置,修改如下即可:
把网站伪静态,写入如下规则即可,
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php?s=$1 last; break;
}
}
意为隐匿index.php文件将?s=这种形式变量传参形式重定向到index.php.
四 apach服务器的pathinfo
宝塔自带apach版本为2.4, 在tp5框架中,专门有一个文件是写给apach读取的,叫.htaccess文件 , 目录在public文件夹下
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
</IfModule>
打开.htaccess.,如上修改,打开重定向即可。注意隐藏index.php时,有时apach默认少了?号,加上?号,pathinfo一切正常。
五 本机测试
宝塔所有建站方式为域名+端口。如果想在window系统本地编辑测试,在购买域名之后,需要将域名绑定到本机。打开如下目录下的hosts文件
127.0.0.1 tp.com
表示当本机访问tp.com域名时,访问本机
五 总结
关于pathinfo,网上和论坛里,人者见仁,智者见智。实际工作中,用宝塔面板来配置服务器和网站,操作相对简单,易于理解。总结起来其实就两点,分别修改网站下的配置即可。
ngix 修改伪静态
apach 修改.htaccess文件