您的位置:首页 > 运维架构 > Apache

PHP的Thinkphp5的apache服务器开发过程中的虚拟域名简化以及路由配置

2018-02-11 19:38 701 查看
在PHP的thinkphp开发过程中URL格式为

http://serverName/index.php/module/controller/action/[param/value...]

 开发过程中反复输入次URL十分的繁琐影响开发效率,为此可以通过修改配置来完成虚拟域名替换,主要分为两步

第一步:打开apache目录下的conf\extra内的httpd-vhosts.conf

加上这么一段

<VirtualHost *:80>
DocumentRoot "D:\PHP\XMAPP\htdocs\zerg\public"
ServerName z.cn

</VirtualHost>

<VirtualHost *:80>
DocumentRoot "D:\PHP\XMAPP\htdocs"
ServerName localhost

</VirtualHost>

第一段是配置虚拟域名,第二段是localhost指向public目录
虚拟主机监听80端口,DocumentRoot 的值为项目public地址,根据个人情况改变
ServerName就改成各位喜闻乐见的自定义域名了
如此就可以让apache服务器认出虚拟域名记下来

第二步则是让浏览器认出

C:\Windows\system32\drivers\etc下的host文件 

这里注意一定不要用记事本打开,如果记事本打开请改回无后缀!
加入127.0.0.1 z.cn
即本地回环IP加上虚拟域名
注意这里如果保存失败则把host.txt从文件夹拖到桌面上修改后拖回来即可,重启阿帕奇服务器即可

同时在个人调试中也遇到了3个问题困扰了我近3个小时,特此与分享
1.如果虚拟域名与万维网的域名重复时,360浏览器等,可以删除上网痕迹即可实现域名重定向
2.注意文件后缀名,host文件是没有后缀的,这里个人用记事本打开后,没有改回来,也是排查这个小错误了好久
3.httpd.conf文件下的virtual hosts下的引入必须取消注释

另外路由配置中虚拟域名后面的部分时需要用到thinkphp5路由技术的,因为要是URL更加灵活并且支持语义化,如果固定模块控制器方法的方式不够灵活的。

TP5的路由在application下的route.php



这是初始的文件代码

TP5的编写方式有两种,一种是如上图的配置式编写方式Path_Info,第二种是动态注册
个人推荐动态写法,因为易读性更强一些

首先删除默认的配置代码,之后首先得引入TP5的一个类
use think\Route;所有动态注册都是通过Route类完成的路由定义格式为:Route::rule('路由表达式','路由地址','请求类型','路由参数(数组)','变量规则(数组)')一般需要定义前三个,前两个为必要参数,路由表达式就是你要配置的URL后面的部分,路由地址就是控制器下面的某一个方法后三个可以缺省,HTTP请求类型就是大家熟知GET,POST,DELEETE,PUT,*(此为缺省) *表示任何一种方式都可以,一般限制其中的一种方式即可,如果想支持两种就有|分割,比如GET|POST路由参数也是对路由做出限制,具体参考官方文档,要求格式为数组格式['https'=>ture,...] Route::rule('hello','sample/Test/hello',‘GET’);同时TP5提供了简化,比如要将上面的路由配置可以如此简化,需要注意的是ANY就是*

Route::GET('hello','sample/Test/hello');使用route类下的rule方法指定路由即可
则根据上述两步操作我们的URL便是z.cn/hello便十分简单
注意:原有的pathinfo在注册路由后会失效!TP5内的URL访问模式有PATH_INFO模式,混合模式以及强制使用路由模式这几种模式在application的canfig.php下进行配置


推荐使用单一路由配置模式,可以使项目具有统一性!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  虚拟域名