CodeIgniter - 相对href链接断开

时间:2013-01-25 17:25:36

标签: codeigniter routing rewrite

我最近不得不从以下网站移动基于CodeIgniter的网站:

/var/www/vhosts/dev/

为:

/var/www/vhosts/dev/site1/

我遇到的问题是我需要仍然可以从域中访问Web根目录:www.devdomain.com

现在所有相关链接都已破坏,因为它们显然是指Web根目录。 是否有重写规则或我可以使用的顶级内容会自动将site1/添加到所有基于相对的链接?

那么,通常会发生什么;

<a href="/enrollment">Enrollment</a>
https://www.devdomain.com/enrollment

现在需要成为;

<a href="/enrollment">Enrollment</a>
https://www.devdomain.com/site1/enrollment

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

$ config ['base_url']修复Nikola提及如果您在链接中使用了

<a href="<?php echo base_url(); ?>/enrollment">Enrollment</a>

由于显然您不想通过代码,问题不在Codeigniter中,而是在服务器中(?)。也许.htaccess文件中的RewriteRule可以帮助你(如果你在Apache上)。

我不能评论其他答案,因为我的代表级别很低,否则我只会对Nikola的回答发表评论。

编辑:我刚认清了。你必须从href属性中删除初始的“/”!它是网络服务器的根源,它是一个相对链接,但不是你想象的方式。如果删除“/”,则链接将转到文件的同一目录级别的文件(在本例中为Codeigniter安装)。抱歉,您必须完成整个代码。

此外,我建议您使用site_url()链接Codeigniter内的控制器,帮助处理这种情况和其他很多情况。

第二次编辑:这不是site_url()而是base_url(),对不起是混乱。刚刚更正了代码。

答案 1 :(得分:0)

请在此处查看我对base_url() vs site_url()主题的回答,以及为何使用其中一个。

How to set proper codeigniter base url?

为了生成到CodeIgniter生成的页面的链接,site_url()实际上是正确的功能。此外,将url作为参数传递给函数作为字符串使得生成URL更清晰。观察:

<a href="<?php echo base_url(); ?>/enrollment">Enrollment</a>

VS

<a href="<?php echo site_url('enrollment'); ?>">Enrollment</a>

甚至:

<?php echo anchor('enrollment', 'Enrollment'); ?>