Yii2 前后端共用同一个域名的有效方法 [ 2.0 版本 ]
前不久在在探寻Yii2高级版,前后端使用域名的问题,官方是要前后台各用一个域名,哪怕是两个二级域名也好,但是这样测试不好弄,还不如同一个域名,后台只要在该域名后面加上/admin就好了,后来在网上找了很多配置方法,又是改apache配置,又是改前后台的cofig文件夹的main配置,还有还要在根目录和前后台的web目录各放一个.htaccess,关键是忙活了半天,就让一直提示403还是500来着,后来经过了一段的研究,用了以下简单粗暴的方法解决了,不用那么麻烦就轻松解决了所有问题,也不用创建.htaccess。
方法如下(要说重点了,请做好笔记,会考的哦)
方法就是在前端的frontend的web目录下创建后台目录,比如你的后台是admin就创建admin,然后从backend的web的index.php复制到admin里面,然后重新定位下文件路径就好了,简单的方法就是'/../../'
全部改为'/../../../'
,以'/config/'开头的全部在前面加上'/backend/'。如果实在不会操作,就复制我下面的代码到该文件吧。apache的网站还是直接指向'/frontend/web/',这样前后台的唯一入口都在这里了,这样你就可以用的域名 http://ww.你的域名.com/admin
访问你的后台了。这样是不是很酷??
代码:(目录文件:frontend/web/admin/index.php):
<?php
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
require __DIR__ . '/../../../vendor/autoload.php';
require __DIR__ . '/../../../vendor/yiisoft/yii2/Yii.php';
require __DIR__ . '/../../../common/config/bootstrap.php';
require __DIR__ . '/../../../backend/config/bootstrap.php';
$config = yii\helpers\ArrayHelper::merge(
require __DIR__ . '/../../../common/config/main.php',
require __DIR__ . '/../../../common/config/main-local.php',
require __DIR__ . '/../../../backend/config/main.php',
require __DIR__ . '/../../../backend/config/main-local.php'
);
(new yii\web\Application($config))->run();
clao
注册时间:2018-08-03
最后登录:2022-01-25
在线时长:9小时19分
最后登录:2022-01-25
在线时长:9小时19分
- 粉丝1
- 金钱80
- 威望20
- 积分370
共 14 条评论
收藏了。。。
简单 粗暴
果真有点粗暴。 后台的控制器呢? 要写到frontend里吗?
不用,后台的控制器该在哪里写就在哪里写,这边只是把这个文件作为入口,指到后台相应的文件而已。
Mark一下,收藏,果然是简单粗暴才有效
果真简单粗暴
使用模块管理不是更好?
如果你有其他办法那更好,这种办法是以最简单的方式解决问题
简单粗暴。。。
按照你的测试了,但是不好使啊,兄dei
我用的nginx,例如:
http://www.你的域名.com/admin/index.php/test/index
,必须是这样的,不然会404@听風者 我用的是apache是没有问题,nginx估计要写URL规则吧,还有我这个是没有开启URL美化,最原始的方式。
@clao 谢谢,我自己配置好了
@听風者 请问你是怎么配置的呢?
@DicksonLee https://www.yiichina.com/tutorial/1859 看下这篇文章,应该会对你有帮助
这方法不止简单粗暴,相比修改环境文件更合理。
我前端frontend用了URL美化,backend模块没有用到,按照你说的弄了之后,只有后端模块首页可以打开,其他页面都是500.。。
我一直都是404是什么原因呢?配置我都改了的
大胸弟,既然是小白就不要乱说带坏别人,市面就是有太多你们这种小白搞得全是垃圾代码。
你要一个域名很简单,把backend里面的控制复制到前端里就好了,增加一个叫做admin的模块
但是老老实实搞两个域名不香吗?知道为什么官方要搞两个域名吗?难道人家不知道同用一个域名在使用上更方便?搞两个域名是有其道理的。只有小白才会想着把后台管理混在前台,不知道分开的重要性
这是一个好方法啊
直接把域名绑定到YII的主目录,而不是绑定到YII里面项目的WEB目录就好了,然后把两个入口文件提到目录里,修改一下里面的目录引用位置。不然还会涉及到网站跨目录安全、后台文件上传跟前台引用不对应等问题