2013-06-25 44 views
0

我想添加www和重定向所有非www網址到基於codeigniter的項目的www網址,但我的發佈數據後,這樣做不工作。這裏是Apache .htaccess文件的內容:重定向到/添加www基於URL codeigniter的項目

RewriteCond %{HTTP_HOST} ^examplesite\.com$ [NC] 
RewriteRule ^(.*)$ http://www.examplesite.com/$1 [R=301,L] 

我有$config['uri_protocol'] = 'AUTO';

如果我沒有www網址,一切都會像魅力一樣。我試過REQUEST_URI,但它也沒有工作。

回答

1

這是因爲如果響應是重定向,瀏覽器將不會重新提交POST數據。這是一個正常和預期的事情。你可以做的是隻重寫GET請求一個額外的條件:

RewriteCond %{REQUEST_METHOD} GET [NC] 
RewriteCond %{HTTP_HOST} ^examplesite\.com$ [NC] 
RewriteRule ^(.*)$ http://www.examplesite.com/$1 [R=301,L] 

離開$config['site_url']選項application/config/config.php爲空字符串(這將使CI做自動檢測),並在您的視圖代碼,使用site_url()幫手或form builder functions,所以它會使用請求進來的域名。

+0

我明白你說什麼,但我從來沒有發現這個解決方案「只重寫GET請求」在任何地方,奇怪的是,我只有這樣的問題,同時強制www到網址。這應該是一個普遍問題,應該有這個參考。 – asm234

+1

我的猜測是,POST請求主要是從你自己的應用程序生成的(也許你正在運行一個服務),並且應該非常清楚它應該爲'www'域創建帖子,而GET請求可以來自諸如搜索引擎,書籤等許多來源......但是,如果由於某種原因您無法更改您的表單,至少可以讓您的代碼正常工作。 – complex857