在旧项目中加入 Yii2 后 ,怎样才能使用 localhost/controller/action [ 2.0 版本 ]
旧项目未使用框架是直接访问 php 脚本,现在想在项目中加入 Yii2 框架后 ,新功能使用 Yii2 开发;
现在想使用 localhost/controller/action
的方式直接访问,但是服务根目录需要指定到 Yii2 目录的上级
目录结构为 webroot/yii2/web
想请教要怎么样设置才能不影响旧的地址访问,也能实现路径中不带 yii2/web
Yii2 框架内容的访问
longxiang 补充于 2019-03-07 09:51
我已经通过查询文档实现在旧项目中增加yii2 框架,步骤如下,但不知道这样做是否会引起其他问题
增加yii2到原项目中
在yii2 加入到项目中后 就可以直接使用子目录直接访问yii2中的内容,host/yii2/web/index.php?r=site/index
如果需要使用不带子目录的 pathinfo 方式访问 host/site/index ,需要配置如下几点
配置apache 或nginx 的rewrite,如果文件存在直接使用,否则进入yii2 处理
我是使用的nginx:location / { if (!-e $request_filename) { rewrite ^(.*)$ /yii2/web/index.php?r=$1 last; break; } }
配置yii2 config
开户url 美化 ,不开启的话yii2 生成的url会带r 参数'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ //可以定义路由规则 ], ],
设置请求的 baseUrl 为空 ,不设为空的话会出现无法确定请求的路径信息的错误
'request' => [ // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation 'cookieValidationKey' => '8888888888888888888', 'baseUrl'=>'' ],
- 设置静态资源url 以及所有自定义的AssetBundle 类 中的baseUrl对应到实际路径 , 这样就可以定位正确的静态文件目录
'assetManager' => [ 'baseUrl'=>'/yii2/web/assets/' ]
至此就可以使用 host/site/index 的方式访问 yii2 中的内容
以上法是我按文档设置的,不知道是否会引起其他问题出现
其他 1 个回答
longxiang
注册时间:2017-04-06
最后登录:2021-06-17
在线时长:14小时27分
最后登录:2021-06-17
在线时长:14小时27分
- 粉丝1
- 金钱440
- 威望10
- 积分680