【问题标题】:Strange link behavior in codeignitercodeigniter 中的奇怪链接行为
【发布时间】:2015-03-02 01:58:06
【问题描述】:

这是让我质疑自己的理智的问题之一。我正在使用 php,codeigniter 框架,在 htaccess 中使用 mod rewrite 从 URL 中删除 index.php。

我在这个地址

http://localhost/health/users/bob/progress/

我点击一个链接,将我带到

http://localhost/health/users/bob/progress/01-04-15

然后我点击一个带我返回的链接

http://localhost/health/users/bob/progress/

现在奇怪的事情来了。我点击了之前带我去的同一个链接

http://localhost/health/users/bob/progress/01-04-15

但是,现在它带我去

http://localhost/health/users/bob/progress/progress/01-04-15

我已经完成了十几次这些步骤。这绝对是它给我的行为。当我进行完全刷新时,它甚至会发生。我实际上必须访问一个不同的地址,然后返回以获取链接

http://localhost/health/users/bob/progress/

再次正常工作。我猜它要么与 mod 重写有关,要么与 codeigniter 框架中的其他一些重写行为有关。

【问题讨论】:

  • 编程时不会出现奇怪的行为,除非您做了一些您无法弄清楚的事情。您是否编写了代码?您在健康控制器下的用户函数(或用户控制器下的 bob 函数)是什么样的?

标签: php .htaccess codeigniter mod-rewrite hyperlink


【解决方案1】:

我很确定您使用的链接的相对路径类似于:

<a href="/somerelativepath">link here</a>

我建议你改用 CI 的 base_url,这样链接就变成了绝对的:

<a href="<?=base_url()?>/nowabsolutepath">link here</a>

base_url 在您的配置文件中设置。请告诉我们进展如何!

【讨论】:

  • 这绝对有效,并且 base_url 让我在移动到不同的目录结构时不必更改代码,所以绝对是一个复选标记,但我绝对不明白是什么导致了问题.
【解决方案2】:

我的猜测是您的链接类似于以下内容,因此它被附加到当前网址

href="progress/01-04-15"

尝试使用绝对路径创建您的链接,最好在其后附加 base_url 或来自 codeigniter + progress/date 的 current_url。

href="http://localhost/health/users/bob/progress/01-04-15"

这样您每次都将获得正确的链接,而不是将其附加到当前网址。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多