Fork me on GitHub

域名重定向及tp5的访问工作机制详解

标签(空格分隔): 重定向 tp5


  在tp5中入口文件为tp5\public\index.php,即正常访问路径为http://127.0.0.1/tp5/public/index.php,所以如何修改访问路径http://127.0.0.1/也可以正常打开tp5的首页呢?
  答案是域名重定向
修改apache的配置文件vhosts.conf,修改后内容如下:

<VirtualHost _default_:80>
DocumentRoot "C:\phpStudy\PHPTutorial\WWW\tp5\public" #修改文档根目录
  <Directory "C:\phpStudy\PHPTutorial\WWW\tp5\public"> #这里可以不修改
    Options -Indexes -FollowSymLinks +ExecCGI
    AllowOverride All
    Order allow,deny
    Allow from all
    Require all granted
  </Directory>
</VirtualHost>

显示效果如下:
微信截图_20190320150232.png-2.7kB
如果想通过本地hosts文件解析为域名访问:
win + r ,输入cmd,按下 Shift + Ctrl + Entrl,以管理员身份运行,输入以下命令

%添加本地hosts解析%
echo 127.0.0.1 www.tp5.com >> C:\Windows\System32\drivers\etc\hosts

%刷新浏览器dns缓存%<?php
namespace app\index\controller;

use think\View;
class Index
{
    public function index()
    {
    	$v = new View();
        return $v->fetch();
    }
    public function index2()
    {
    	return '素还真';
    }
}

ipconfig /flushdns

通过域名访问如下:
微信截图_20190320150232.png-3.2kB

tp5的访问工作机制


我们在index.php控制器中添加一个公共方法index2,代码如下:

<?php
namespace app\index\controller;

use think\View;
class Index
{
    public function index()
    {
    	$v = new View();
        return $v->fetch();
    }
    public function index2()
    {
    	return '素还真';
    }
}

那么,我们如何访问index2这个方法呢?
答案:访问url为http://www.tp5.com/index.php/index/index/index2
微信截图_20190320150232.png-7.4kB
问题来了,为什么这个url这个长,不好看,那就来分析看,这些url路径都代表了哪些内容?我们又可以采取哪些动作让url更简洁呢?

  1. www.tp5.com 与前文表示了定位到public目录下
  2. index.php 代表了index.php这个文件,
  3. index 第一个index代表了 浏览器访问index模块
  4. index 第二个index代表了 浏览器访问index模块下的index类
  5. index2 方法index2代表了 浏览器访问index模块下的 index类下的 index2

那么按照上面的分析,是否我们可以另外创建一个模块,取名叫做Pili(霹雳)拼音)
首先,来到application目录下,创建一个pili\controller文件夹:
win + r ,输入cmd,按住 Shift + Ctrl + Entry,执行以下命令

cd C:\phpStudy\PHPTutorial\WWW\tp5\application\
%控制器创建 c%
mkdir pili\controller 
echo >> pili\controller\index.php
%视图创建 v%
mkdir pili\view\Shz
echo >> pili\view\Shz\index.html

模块目录结构如下:
微信截图_20190320150232.png-2.3kB

  打开pili\controller\index.php文件,对照着index\controller\index.php,描摹试试,代码如下:

#index.php 代码内容
namespace app\pili\controller;

use think\View;
/**
 * 
 */
class Shz extends View
{
	
	function index()
	{
		return $this->fetch();
	}
}
<!-- html模板内容 -->
<!DOCTYPE html>
<html>
<head>
	<title>Pili模块</title>
</head>
<body>
	<h4>Pili模块</h4>
</body>
</html>

  浏览器访问url:http://www.tp5.com/index.php/pili/shz
微信截图_20190320150232.png-5.5kB

  套用上面url的分析,已理解url的每块内容

  1. index.php public入口文件
  2. pili 新创建的模块
  3. shz shz类
  4. index 未在url中出现,tp5默认使用index方法,同理可以创建其他方法index2,以http://www.tp5.com/index.php/pili/shz/index2来访问
posted on 2019-03-21 08:39  anyux  阅读(435)  评论(0)    收藏  举报