 <p>You can also use the <a href="http://en.wikipedia.org/wiki/Post/Redirect/Get" rel="nofollow noreferrer">Post/Redirect/Get design pattern</a> pattern to solve this, allowing users to bookmark URLs of searches (without them expiring as a session would) and keeping URLs looking friendly. For example:</p> <pre><code>function index($searchTerms = null) { // post/redirect/get if (isset($this-&gt;data['SearchForm'])) { $this-&gt;redirect(array($this-&gt;data['SearchForm']['search_terms'])); } // your normal code here. } </code></pre> <p>The search form data POSTs to <code>/controller/action</code> but the user is redirected and instead GETs <code>/controller/action/search+terms</code> where the terms are passed into the action as a parameter (ie. <code>$searchTerms</code>).</p> <p>If you simply change the form submission method to GET you will instead see something like: <code>/controller/action?data[SearchForm][search_terms]=search+terms</code></p>