Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Clean URLs for search query?

This works:

HTML

<a href="/search/querystring">query</a>

htaccess

RewriteRule ^search/([-0-9a-z]+)$ /search.php?q=$1 [L]

Going through a search form:

<form method="get" action="/search">
<input type="search" name="q" value="querystring" />
<input type="submit" />
</form>
  • Result: http://example.com/search?q=querystring
  • Desired result: http://example.com/search/querystring

Is this possible with htaccess or do I need to redirect with PHP from within search.php?

Example desired result in action: http://twitter.com/search/hello

EDIT

I prefer not to be dependant on JavaScript to do this so search engines and folks with JavaScript disabled will see this too.

like image 576
DADU Avatar asked Mar 28 '11 20:03

DADU


People also ask

What is considered a clean URL?

Clean URLs (or semantic URLs) are readable URLs for websites or web services that intuitively represent the underlying resource. This typically means: Omitting implementation details for the underlying web-server. The URL should not contain suffixes like . php or jsp that denote the underlying technology stack.

What are the key benefits to clean URLs?

A clean URL is less intimidating to a human user. They can look at it and get an idea what the page is about. Clean URLs are also more sharable. Being short and meaningful, they are more pleasing to the eye and more likely to be shared on Twitter, Facebook, or other sites, and via email.


1 Answers

I think the problem is that you've created an HTML form with GET method, which automatically opens the URL that way you specified as the result. If you want to submit your search query like the desired one, you should hack the form with some JavaScript to call your good-looking URL like this:

<form method="get" action="/search/" onsubmit="return false;">
<input type="search" name="q" value="querystring" />
<input type="submit" onclick="window.location.href=this.form.action + this.form.q.value;" />
</form>
like image 54
Imi Borbas Avatar answered Sep 28 '22 17:09

Imi Borbas