[wp-hackers] Rewriting search URL

Terrence Wood tdw at funkive.com
Fri Apr 22 01:58:30 GMT 2005

Here's a proof of concept for rewriting a query string into a url... 
works on apache. I'll leave integrating it in WP for you.

1. Create a test file 'testsearch.php' and put it in your WP root dir 
with the following:

// put search term back in form if exists
$str = (isset($_REQUEST['s'])) ? 'value="'.$_REQUEST['s'].'"': null;
// always submit form to your-WP-install/search/
$self = preg_replace ( '@/search.+@', '/search/', 
// note: form must be GET, POST won't work
<form action="<?php echo $self; ?>" method="get">
<input type="text" name="s" <?php echo $str; ?> />
<input type="submit" value="search" />

2. Put these rules in your .htaccess above your WP rules, changing 
your-WP-install as needed:

RewriteEngine on
RewriteBase /your-WP-install/
# get the query string, append to path and redirect.
# '?' in the rewriteRule removes query string from URL
# 'R' is an external redirect so new URL appears in location bar
RewriteCond %{QUERY_STRING} s=(.+)
RewriteRule ^search/?$             search/%1/? [R]
# redirect to our search page, scraping URL for querystring if it exists
RewriteRule ^search/([^/]+)?/?$    testsearch.php?s=$1 [L]

Terrence Wood

On 22 Apr 2005, at 10:30 AM, Peak Discharge wrote:

> That changes my url into the form of http://www.unicorns.com/?s=string,
> which is a progress. The aim, however is to change all search urls to
> http://www.unicorns.com/search/string

More information about the wp-hackers mailing list