Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php codeigniter中的奇怪链接行为_Php_.htaccess_Codeigniter_Mod Rewrite_Hyperlink - Fatal编程技术网

Php codeigniter中的奇怪链接行为

Php codeigniter中的奇怪链接行为,php,.htaccess,codeigniter,mod-rewrite,hyperlink,Php,.htaccess,Codeigniter,Mod Rewrite,Hyperlink,这是一个让我怀疑自己是否理智的问题。我正在使用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

这是一个让我怀疑自己是否理智的问题。我正在使用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 rewrite有关,要么与codeigniter框架中的其他重写行为有关。

我猜你的链接看起来像下面这样,因此它会被附加到当前url中

href="progress/01-04-15"
尝试使用绝对路径创建链接,最好在链接后附加codeigniter+进度/日期中的基本url或当前url

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

这样,您每次都可以访问正确的链接,而不是将其附加到当前url。

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

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

我建议您改为使用CI的基本url,以便链接成为绝对链接:

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


基本url已在配置文件中设置。请告诉我们进展如何

编程时不会出现奇怪的行为,除非您做了一些您无法理解的事情。您编写了代码吗?health controller下的用户函数(或users controller下的bob函数)是什么样子的?这肯定有效,并且base_url使我不必在移动到其他目录结构时更改代码,所以肯定是一个复选标记,但我绝对不明白是什么原因首先导致了这个问题。