2015-01-04 98 views
0

這是使我質疑我的理智的問題之一。我正在使用PHP,codeigniter框架,從URL中刪除index.php與mod重寫htaccess。codeigniter中奇怪的鏈接行爲

我在這個地址

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框架中的其他重寫行爲有關。

+0

編程時不會發生奇怪的行爲,除非你做了一些你無法弄清楚的事情。你是否編寫了代碼?你在健康控制器下的用戶功能是什麼(或用戶控制器下的bob功能)看起來很喜歡? –

回答

1

我敢肯定你正在使用的鏈接,進入類似的相對路徑:

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

我會建議你使用CI的BASE_URL代替該鏈接成爲絕對的:

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

base_url在您的配置文件中設置。請讓我們知道它是怎麼回事!

+0

這絕對有效,base_url讓我無需改變代碼時,移動到不同的目錄結構,所以絕對是一個複選標記,但我絕對不明白是什麼原因造成的問題。 – Goose

1

我的猜測是,你的鏈接看起來像以下內容,因爲它獲得的追加到當前URL

href="progress/01-04-15" 

嘗試使用絕對路徑,使您的鏈接,最好用BASE_URL或current_url從追加它codeigniter +進度/日期。

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

這樣你每次都會得到正確的鏈接,而不是將它追加到當前的url。