宝塔面板部署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文件

时间: 09-23

宝塔面板部署thinkphp项目时ngix和apach服务器pathinfo的设置的相关文章

wex5教程 宝塔面板+lnmp+wex5项目部署

一 前言 wex5作为前端利器,开发好的项目如何正确.快速.高效.稳定.安全的部署到服务器上,作为初学开发人员,有必要选择一种操作简单,便于运维的方案.今天我以教学视频网站为例,选择宝塔服务器面板,一键安装linux+ngix+mysql+php服务器环境,从建站到部署wex5项目,完成整个操作过程. 效果见我教学网站:http://chinese.sow8.com:10 宝塔面板效果如下,简单,实用,直观. 二  linux系统安装 我选择CentOS,7.3 64位.实测低版本会导致宝塔安装

apache部署django项目时出现错误

apache部署Django项目时出现错误 Permission denied: mod_wsgi (pid=2081): Unable to connect to WSGI daemon process 'autotester' on '/etc/httpd/logs/wsgi.2076.0.1.sock' after multiple attempts 可在apache配置文件或者wsgi.conf中添加 WSGISocketPrefix /var/run/

在IIS下部署Thinkphp项目,验证码不能显示的解决办法

由于公司租用的是虚拟空间,而且用的是IIS服务器,所以部署PHP的时候就出现很多问题:比如昨天就碰到这个问题:在IIS下部署Thinkphp项目,验证码不能显示 这是生成验证码的方法: // 制作专门方法实现验证码生成 function verifyImg() { // 以下类Verify在之前并没有include引入 // 走自动加载Think.class.php autoload() $config = array ( 'useNoise' => false, 'imageH' => 35

宝塔面板部署Python的Flask框架项目

以Linux版宝塔面板为例.本篇文章给大家介绍宝塔面板如何部署Flask项目. 先做好准备工作: 进入你的项目根目录,使用命令把项目依赖包导出到项目根目录. pip freeze >requirements.txt 然后把你的项目上传到服务器. 把你的Flask框架项目中的 第一步: 在宝塔应用商店点击“宝塔插件”或搜索“python”找到“Python项目管理器”并安装. 第二步:安装完毕后点击“设置”按钮. 第三步:进行设置界面,单击“版本管理”,安装你项目需要的python版本: 第四步:

记一次nginx部署yii2项目时502 bad gatewary错误的排查

周六闲来无事,就试着安装和部署下yii2,安装过程没什么问题,但部署到nginx上时遇到了502 bad gatewary问题,折腾了半天才搞定.这个问题是我以前在部署yii2时没有遇到过的,因此记在这里以备忘. 1,安装和部署环境 操作系统:macOS,php版本:5.6,nginx版本:1.10.1,yii2版本:2.0. 2,yii2的安装 yii2的安装很简单,参考官网的手册即可.我这里安装的是yii2-app-advanced(Yii 2 Advanced Project Templa

Eclipse部署Web项目时常见的错误和解决方案

Tomcat部署Web项目到tomcat 在eclipse中找到Servers项,打开服务器(F3)(建议直接删除服务器,重新建立再设置比较好)1.Servers Locations 中选择Use Tomcat installation 2.Deploy path 改成 webapps这时候在eclipse上直接运行项目,就会自动部署到tomcat上,通过浏览器或者eclipse都可以访问该项目. Tomcat控制台的用户角色配置 在Tomcat的Mapper App中,默认没有提供控制台角色.

已解决: idea创建并部署SpringMVC项目时 报错 java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

用IDEA创建并运行SpringMVC项目时,最初发现没有Servlet包,这个问题已在上篇解决,然而当我们尝试去运行此时的SpringMVC项目时,发现仍然有错误.ClassNotFoundException 笔者也是IDEA的新手,在网上查了很多资料 有帖子说是Tomcat Server 的  VM options 没有填写,按照帖子填上这一项后,重启项目依然报错,最后终于找到了问题的原因,spring springmvc 的jar包没有导入.. 下面来解决这个问题: 现在问题解决了 原文地

Jenkins部署python项目时,提示找不到自己定义的模块包的问题

今天尝试在Jenkins上部署我们的自动化项目,用简单的登录用例来配置,然后我们项目(我自己随意写的)使用的是python+selenium, 在搭建好环境之后,构建的时候碰到了一个问题,就是一直提示找不到我自己定义的模块包,提示错误 ModuleNotFoundError: No module named 'common',截图如下: 但是我在pycharm中的IDE中运行又是正常的,不死心在cmd中运行了一下,发现跟Jenkins上面一样的问题,然后就百度了一下总算发现了问题的所在了 产生原

最完美解决Nginx部署ThinkPHP项目的办法

网上通用解决方法的配置如下: server { ... location / { index  index.htm index.html index.php; #访问路径的文件不存在则重写URL转交给ThinkPHP处理 if (!-e $request_filename) { rewrite  ^/(.*)$  /index.php/$1  last; break; } } location ~ \.php/?.*$ { root        /var/www/html/website; f