Jay Smoke
Jay Smoke

Reputation: 604

Create SEO Friendly URLs from _GET query

I have a search form using GET request. When I hit enter, the url is as usual not SEO friendly, is there a way in which I can make it display SEO friendly urls when entered?

Eg.

GET Request http://someurl.com?a=search&query=what+are+you+looking+for
SEO URL should be http://someurl.com/search/what+are+you+looking+for

I already created a rule

RewriteRule ^search/(\w+) index.php?a=search&query=$1

in my .htaccess that works when I manually type the SEO Url into the address bar. So I guess it's only a matter of making sure when I hit enter inside the search field, it loads the SEO Url instead of the other.

Upvotes: 0

Views: 1899

Answers (3)

Nemanja Jeremic
Nemanja Jeremic

Reputation: 344

I do this on my way :)

This is the form for search

  <form method="post">
     <input type="text" name="search" placeholder="search"/>
  </form>

Before form

if(isset($_POST['search'])){
echo '<script>window.location = "www.domain.com/search/'.$_POST['search'].'"</script>';
}

And in .htaccess

RewriteEngine on
RewriteRule ^search/([^/]*)$ index.php?page=search&search=$1 [NC,L]

Upvotes: 0

Amit Verma
Amit Verma

Reputation: 41249

You have to redirect your orignal uri to the new uri , add the followng before your existing rule :

RewriteEngine on
RewriteCond %{THE_REQUEST} /(?:index\.php)?\?a=search&query=(.+)\sHTTP [NC]
RewriteRule ^ /search/%1? [NE,L,R]

Upvotes: 2

Joe
Joe

Reputation: 4897

You can use this in your .htaccess:

RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)$ /?a=$1&query=$2 [L]

This will leave you with the URL:

http://someurl.com/search/what+are+you+looking+for

Upvotes: 0

Related Questions