clao 2018-08-08 09:41:51 7637次浏览 14条评论 15 7 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();
觉得很赞
  • 评论于 2021-04-28 16:54 举报

    直接把域名绑定到YII的主目录,而不是绑定到YII里面项目的WEB目录就好了,然后把两个入口文件提到目录里,修改一下里面的目录引用位置。不然还会涉及到网站跨目录安全、后台文件上传跟前台引用不对应等问题

  • 评论于 2021-04-04 22:53 举报

    这是一个好方法啊

  • 评论于 2020-07-18 05:44 举报

    大胸弟,既然是小白就不要乱说带坏别人,市面就是有太多你们这种小白搞得全是垃圾代码。
    你要一个域名很简单,把backend里面的控制复制到前端里就好了,增加一个叫做admin的模块
    但是老老实实搞两个域名不香吗?知道为什么官方要搞两个域名吗?难道人家不知道同用一个域名在使用上更方便?搞两个域名是有其道理的。只有小白才会想着把后台管理混在前台,不知道分开的重要性

  • 评论于 2020-03-21 21:53 举报

    我一直都是404是什么原因呢?配置我都改了的

  • 评论于 2019-09-09 15:10 举报

    我前端frontend用了URL美化,backend模块没有用到,按照你说的弄了之后,只有后端模块首页可以打开,其他页面都是500.。。

  • 评论于 2019-08-26 09:44 举报

    这方法不止简单粗暴,相比修改环境文件更合理。

  • 评论于 2018-12-07 15:38 举报

    按照你的测试了,但是不好使啊,兄dei

    5 条回复
    评论于 2018-12-07 18:36 回复

    我用的nginx,例如:http://www.你的域名.com/admin/index.php/test/index,必须是这样的,不然会404

    评论于 2018-12-07 22:00 回复

    我用的是apache是没有问题,nginx估计要写URL规则吧,还有我这个是没有开启URL美化,最原始的方式。

    评论于 2018-12-08 10:05 回复

    谢谢,我自己配置好了

    评论于 2019-01-08 17:24 回复

    请问你是怎么配置的呢?

    评论于 2019-01-10 09:54 回复

    https://www.yiichina.com/tutorial/1859 看下这篇文章,应该会对你有帮助

  • 评论于 2018-11-07 16:29 举报

    简单粗暴。。。

  • 评论于 2018-11-02 10:17 举报

    使用模块管理不是更好?

    1 条回复
    评论于 2018-11-06 10:25 回复

    如果你有其他办法那更好,这种办法是以最简单的方式解决问题

  • 评论于 2018-11-02 09:02 举报

    果真简单粗暴

  • 评论于 2018-10-25 18:04 举报

    Mark一下,收藏,果然是简单粗暴才有效

  • 评论于 2018-10-10 11:08 举报

    果真有点粗暴。 后台的控制器呢? 要写到frontend里吗?

    1 条回复
    评论于 2018-10-11 13:28 回复

    不用,后台的控制器该在哪里写就在哪里写,这边只是把这个文件作为入口,指到后台相应的文件而已。

  • 评论于 2018-10-09 10:57 举报

    简单 粗暴

  • 评论于 2018-09-28 10:53 举报

    收藏了。。。

您需要登录后才可以评论。登录 | 立即注册