2012-11-09 28 views
2

我有一個奇怪的問題。一切都很好,直到昨天,突然發現這個問題。正在重定向的Codeigniter URL或額外的部分被添加到URL

的網站是在這裏: http://www.famtripsandinspectionvisits.com/all_trips

如果你訪問網頁上面,然後點擊「印度喀拉拉邦的」鏈接,就應該帶你到以下頁面。

http://www.famtripsandinspectionvisits.com/trips/old_trips/india_kerala

然而,瀏覽器重定向到這個頁面: http://www.famtripsandinspectionvisits.com/all_trips/old_trips/india_kerala?/trips/old_trips/india_kerala 這表明以下部分加入是多餘的。 all_trips/old_trips/india_kerala?

我檢查了我的.htaac​​cess並將其重置爲默認值,但它仍然不會影響它。我檢查了我的cofnig.php的基礎網址,一切都和以前一樣。如果任何人都可以幫忙,我會認真的。

我的.htaccess文件

# Use PHP5 Single php.ini as default 
AddHandler application/x-httpd-php5s .php 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [L] 

Redirect 301 /invest.php http://www.famtripsandinspectionvisits.com/investment_opportunity 
Redirect 301 /buyers.php http://www.famtripsandinspectionvisits.com/buyers 
Redirect 301 /trips.php http://www.famtripsandinspectionvisits.com/all_trips 
Redirect 301 /sellers.php http://www.famtripsandinspectionvisits.com/sellers 
Redirect 301 /contact.php http://www.famtripsandinspectionvisits.com/contact_us 
Redirect 301 /about.php http://www.famtripsandinspectionvisits.com/about_us 
Redirect 301 /login.php http://www.famtripsandinspectionvisits.com/login 
Redirect 301 /trip-kerala.php http://www.famtripsandinspectionvisits.com/trips/old_trips/india_kerala 
Redirect 301 /trip-burundi.php http://www.famtripsandinspectionvisits.com/trips/up_coming_trips/burundi_africa 
Redirect 301 /register.php http://www.famtripsandinspectionvisits.com/register 
Redirect 301 /trips http://www.famtripsandinspectionvisits.com/all_trips 

我routes.php文件

$route['default_controller'] = "site"; 
$route['404_override'] = ''; 

$route['fam_admin'] = "fam_admin/login"; 
/* End of file routes.php */ 
/* Location: ./application/config/routes.php */ 

親切的問候

+0

兩者不會忽略返回404的權利嗎?也許這是原因?試着讓你的控制器的路徑工作,以避免404並告訴我們它是否工作? –

+0

您可以發佈您'.htaccess'和'routes.php'文件? – jeroen

+0

我覺得probem與重定向或某處網址多餘部分將被加入這個被添加在那裏不知道該怎麼。 – Sahil

回答

1

我認爲你需要做的是告訴你要新老查詢字符串相結合的mod_rewrite,這需要使用QSA標誌:

RewriteBase/
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php?$1 [QSA,L] 

這是我的「標準」基地我的Codeigniter項目的一套規則,剩下的我完成很多,就像你對自定義路線和偶爾的重定向一樣。

只用一個問號結束替換(在沒有QSA標誌的情況下)將刪除現有的查詢字符串並將其替換爲新的,我認爲這解釋了您所看到的內容。

documentation for mod_rewrite得到多一點的深入,當談到這一點:

修改查詢字符串

默認情況下,查詢字符串加改變地通過。但是,您可以在包含查詢字符串部分的查詢 的替換字符串中創建URL。只需在替換字符串 內使用問號表示應將以下文本重新注入 查詢字符串中。當您要刪除現有查詢字符串時,只需使用問號結束 替換字符串。要結合新舊 查詢字符串,請使用[QSA]標誌。

0

我有這種類似的問題。嘗試編輯您config.php看起來是這樣的:

$config['index_page'] = 'index.php?'; 

我使用IIS託管假設你使用的CodeIgniter的URL方法之一,你(假設)。我不知道如何刪除'?'在URL和查詢字符串之間添加'?'到你的配置文件至少應該解析鏈接。

+1

什麼使你相信他的使用IIS? –

+0

我假設他正在使用IIS。我在IIS上運行的其中一個站點發生了同樣的問題,並添加了'?'解決了我的問題。 – wesleywmd