用户
 找回密码
 入住 CI 中国社区
搜索
查看: 20665|回复: 20
收起左侧

[已解决] 关于redirect的问题

[复制链接]
发表于 2013-4-8 11:47:35 | 显示全部楼层 |阅读模式
现在我这边代码是放在站点根目录下面的一个子目录里面的,如:site1

htaccess把 site1 和 index.php隐藏了

这两个设置都为空
$config['base_url']        = '';
$config['index_page'] = '';

我用 redirect 跳转,如:redirect('/admin/login');

结果给跳到这样的地址了:http://xxx.com/site1/admin/login
但是我是想要的是这样的:http://xxx.com/admin/login


这个问题要怎么解决啊?大家帮个忙咯
发表于 2014-4-19 17:55:19 | 显示全部楼层
redirect( base_url('/admin/login') );

用这种形式即可,我的网站下面的子网站都这么用。
详见www.qddian.com和www.qddian.com/yishengpin

 楼主| 发表于 2013-4-8 12:20:57 | 显示全部楼层
$config['base_url']        = '/';

这样设置可以解决问题,但是这样生成的 site_url 中没有http,域名等那一块。不知道对程序有没有什么影响?
发表于 2013-4-8 12:24:40 | 显示全部楼层
现在我这边代码是放在站点根目录下面的一个子目录里面的,如:site1

htaccess把 site1 和 index.php隐藏了
楼主此描述一点也不详细。
发表于 2013-4-8 12:26:44 | 显示全部楼层
{:soso__3110130392203091378_3:}$config['base_url']        = '';
$config['index_page'] = '';
这里已经可以忽略index.php 了。你site1是文件夹。那你就要配置routes

$route['admin/login'] = "site1/admin/login";
不知楼猪可行否?
发表于 2013-4-8 12:34:17 | 显示全部楼层
redirect('http://xxx.com/admin/login');    用绝对地址吧?
发表于 2013-4-8 13:06:42 | 显示全部楼层
这样的话 CI 就不能自己判断 base_url 了,就要自己设置 base_url 为 http://domain.com/site1/
 楼主| 发表于 2013-4-8 15:02:27 | 显示全部楼层
叶凡 发表于 2013-4-8 12:24
现在我这边代码是放在站点根目录下面的一个子目录里面的,如:site1

htaccess把 site1 和 index.php隐藏 ...

嗯,不好意思,是这样子的,域名:xxx.com

程序实际所在目录:/site1/
入口文件:index.php

原本地址栏中的url是这样子的:http://xxx.com/site1/index.php/admin/
我用htaccess把地址栏中的url改造成了这样子:http://xxx.com/admin/
这个与路由无关,我需要是隐藏 url 中的 site1 和 index.php,已经做好了。

程序其实运行没有任何问题。只是在用redirect的时候。跳转之后 url 中又出现了 site1,这不是我想要的。

 楼主| 发表于 2013-4-8 15:04:52 | 显示全部楼层
Altair 发表于 2013-4-8 12:34
redirect('http://xxx.com/admin/login');    用绝对地址吧?

我希望可以智能一些,这样写的话,程序中很多地方都会出现这个域名。事实上在实际使用中那个域名应该是不确定的。至少我在本机测试的时候使用的域名(修改host得到的)就和真实域名不一样。我不可能每次都全部替换一下。
 楼主| 发表于 2013-4-8 15:11:34 | 显示全部楼层
Hex 发表于 2013-4-8 13:06
这样的话 CI 就不能自己判断 base_url 了,就要自己设置 base_url 为 http://domain.com/site1/ ...

当前情况下,我不改动config中的$config['base_url'],base_url结果已经是 http://xxx.com/site1/了,就是因为base_url是这样子的,所以在 redirect('/admin/login') 的时候产生的 url 是 http://xxx.com/site1/admin/login 但我不想要 site1 。所以 $config['base_url'] 设成 http://xxx.com 是没有问题的。

但是不知道有没有方法可以不用写得这么死。因为我现在是在写通用网站后台。那就意味着每应用一个网站都要改动这个
 楼主| 发表于 2013-4-8 15:19:40 | 显示全部楼层
我晕了,光想到怎么设置怎么设置的,直接这样搞定:

$config['base_url'] = 'http://'.$_SERVER['SERVER_NAME'].'/';

本版积分规则