0

我最近不得不将基于 CodeIgniter 的网站从以下 Web 根目录中移出:

/var/www/vhosts/dev/

到:

/var/www/vhosts/dev/site1/

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

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

那么,通常情况下会是什么;

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

现在需要成为;

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

任何帮助将不胜感激。

4

2 回答 2

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(),很抱歉造成混淆。刚刚更正了代码。

于 2013-01-25T17:33:55.833 回答
0

请在此处查看我关于base_url()vs主题的回答site_url()以及为什么您使用其中一个。

如何设置正确的codeigniter base url?

对于生成CodeIgniter 生成页面的链接,site_url()其实是正确的功能。此外,将 url 作为参数作为字符串传递给函数可以使生成 url 更清晰。观察:

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

与:

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

甚至:

<?php echo anchor('enrollment', 'Enrollment'); ?>
于 2013-01-25T18:51:56.030 回答