【问题标题】:CodeIgniter - relative href links brokenCodeIgniter - 相关href链接断开
【发布时间】:2013-01-09 17:32:30
【问题描述】:

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

/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

任何帮助将不胜感激。

【问题讨论】:

    标签: codeigniter routing rewrite


    【解决方案1】:

    如果您在链接中使用了 $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(),很抱歉造成混淆。刚刚更正了代码。

    【讨论】:

    • 我尝试将此添加到我的重写规则中,但它似乎不起作用。 RewriteRule ^(.*)$ site1/index.php?/$1 [L] 而我的 RewriteBase 现在是 /site1/ 这是正确的做法吗?
    • 我会尝试一下,看看它是如何工作的。这很有意义!让我去试一试,看看会发生什么。
    • 这似乎确实解决了链接问题。当我尝试将相同的逻辑应用于 css 的 SRC 路径时,没有加载任何样式。这有意义吗?
    • 但是 CSS 文件是通过 href 引用的,而不是 src: 可以还使用 Codeigniter 中的 base_url() 方法添加到 URL。
    • 谢谢你,jakobhans。我真的很感谢你在这方面的帮助。 :)
    【解决方案2】:

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

    How to set proper 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'); ?>
    

    【讨论】:

    • Brendon,也感谢您对这篇文章的非常有见地的补充。这很有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-16
    • 1970-01-01
    • 1970-01-01
    • 2023-02-23
    • 1970-01-01
    • 2018-02-11
    • 1970-01-01
    相关资源
    最近更新 更多