2013-10-18 83 views
2

我目前正在研究CodeIgniter應用程序,但我需要搜索功能對於人類和CodeIgniter來說都更具可讀性。將GET值發送到URL,不帶參數和額外字符?

以下是我當前在提交表單時作爲URL獲取的內容。

http://mydomain.com/search/?query=batman 

這就是我期待的結果。

http://mydomain.com/search/batman 

我不擅長mod重寫,但我想象那是我需要採取的路線?

感謝您的任何幫助。

+3

@BeatAlex這不是+1是什麼,但... – user1477388

+0

你需要路由嗎? http://ellislab.com/codeigniter/user-guide/general/routing.html – pregmatch

+2

我不會這樣做,使用'GET'字符串是進行搜索的正確方法。這樣您就可以告訴搜索引擎和您的分析來跟蹤或忽略這些頁面。 – cmorrissey

回答

0

不是一個很不錯的方法,但:

如果你把它一個什麼POST並將變量放入單獨的控制器中。例如search($s)

public function search($s){ 
    header('Location:http://yoursite.com/whatever/search/'. $s); 
} 

這應該會給你你需要的結果。

+1

這種方法可能不是最乾淨的,但它的工作原理!:) 謝謝。 –

+0

這太噁心了...... – Pattle

+0

@LewisHill:你應該試過一次我所說的,它不是一個乾淨的方法,因爲我看到了(只是一個建議)。礦是同樣的過程,但更適合與'分頁'也是。 –

1

你應該使用mod_rewrite,在你的腳本路徑創建腳本​​的.htaccess:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteRule ^([a-zA-Z0-9]+)$ /index.php?query=$1 [L] 
</IfModule> 

看看到mod_rewrite的文檔的更多相關信息 http://httpd.apache.org/docs/current/mod/mod_rewrite.html

+1

我喜歡這種方法的外觀,說實話,我已經嘗試過,沒有任何工作。 這是我的.htaccess,因爲它已經讓它刪除了函數名。 'RewriteEngine敘述上 的RewriteCond%{} REQUEST_FILENAME!-f 的RewriteCond%{} REQUEST_FILENAME!-d 重寫規則。*的index.php/$ 0 PT,L]' 我嘗試添加您的解決方案的底部我當前.htaccess,但沒有發生任何事情。 我注意到你在腳本中有/index.php,但是我的URL看起來像'http:// localhost/dev/comiq/search /?search = batman'。 這是一個問題嗎? –

0

您可以捕獲與的onsubmit()事件javascript,然後重定向到你想要的url ..

$('#myform').on('submit', function(e){ 
    e.preventDefault(); 
    var value = $('#input').val() 
    window.location = 'http://mydomain.com/search/' + value; 
}) 

當然,你的控制器將看起來像這樣:

class Search extends CI_Controller 
{ 
    public function index($term) 
    { 
     // code code 
    } 

} 
0

首先改變form methodPOST和搜索功能,那麼你可以做這樣的事情:

function search(){ 
    if($this->input->post(null)){ 
     $keyword = $this->input->post('keyword'); 
     #do you processing with the post 
    }else{ 
     $keyword = $this->uri->segment(3); 
    } 

    #for pagination 
    $config['base_url']  = base_url()."controller/search/".$keyword."/page/"; 
    $config['uri_segment'] = 5; 
} 
+0

這很好,但我認爲他想堅持GET +理由@Christopher以上指出 –