Welcome to WebmasterWorld Guest from

Forum Moderators: Ocean10000 & phranque

Message Too Old, No Replies

mod rewrite for query string

rewrite, not not redirect

12:50 pm on Apr 23, 2014 (gmt 0)

Senior Member

WebmasterWorld Senior Member 10+ Year Member

joined:May 30, 2003
posts: 932
votes: 0

I need to get the query string into a .php script.

The context: .htaccess includes as follows:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([A-Za-z0-9_-]+)\ HTTP/
RewriteRule ^([A-Za-z0-9_-]+)$ /cms/$1.php [L]


RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /folder/([A-Za-z0-9_-]+)\ HTTP/
RewriteRule ^([A-Za-z0-9_-]+)$ /folder/cms/$1.php [L]

So, the URL is example.com/page (or example.com/folder/page) and the resource is at example.com/cms/page.php (or example.com/folder/cms/page.php)

Adding parameters to the URL throws up an error so my .htaccess also includes, before the above examples:

RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^search(.*)$ /cms/search.php?%1


RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^search(.*)$ /folder/cms/search.php?%1

(search.php is the file that performs a search)

It seems to work, but I've arrived here by reading up plus some trial and error. There seems to be several way of doing this (from reading up) so I am wondering if my rule is efficient and whether I need some sort of flag at the end, eg: [NC,L,QSA].
6:52 pm on Apr 23, 2014 (gmt 0)

Senior Member from US 

WebmasterWorld Senior Member lucy24 is a WebmasterWorld Top Contributor of All Time 5+ Year Member Top Contributors Of The Month

joined:Apr 9, 2011
votes: 885

Aren't you going around in circles? By default, a rewrite or redirect keeps the original query string unless you either replace it with a new one, or end the target in ? meaning "remove the query string". So if you say nothing at all, the original query string will carry over unchanged.

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([A-Za-z0-9_-]+)\ HTTP/

This boils down to "There was no query string in the original request", so now I'm confused. Are you trying to keep a query, or add one? There shouldn't be two separate RewriteRules covering the same request.

I think it will work out better if you backtrack and simply explain in English what you're trying to do.