# General rule for rewrite

**URL:** <https://www.ruby-forum.com/t/general-rule-for-rewrite/209872>\
**Category:** NGINX\
**Created:** [July 25, 2011, 2:36pm UTC](https://www.ruby-forum.com/t/general-rule-for-rewrite/209872 "2011-07-25T14:36:28Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![luislavena](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/0ea827/32.png) [@luislavena](https://www.ruby-forum.com/u/luislavena)\
**Post date:** [July 25, 2011, 2:36pm UTC](https://www.ruby-forum.com/t/general-rule-for-rewrite/209872/1 "2011-07-25T14:36:28Z")

</div>

I use this rewrite rule to create SEO friendly urls  
rewrite ^/search/(.\*).html /search.php?q=$1 last;

I have similar rewrites too; I wonder if it is possible to write a  
general rule to do so for all php files?  
I mean rewrites filename.php?q=something to /filename/something.html

instead of writing a rewrite rule for each php file

Posted at Nginx Forum:

> **[general rule for rewrite](https://forum.nginx.org/read.php?2,212912,212912#msg-212912)**
>
> I use this rewrite rule to create SEO friendly urls rewrite ^/search/(.\*).html /search.php?q=$1 last; I have similar rewrites too; I wonder if it is possible to write a general rule to do so for all php files? I mean rewrites filename.php?q=something...

---

<div class="post-metadata">

**Author:** ![etrader](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/b5e925/32.png) [@etrader](https://www.ruby-forum.com/u/etrader)\
**Post date:** [July 25, 2011, 2:56pm UTC](https://www.ruby-forum.com/t/general-rule-for-rewrite/209872/2 "2011-07-25T14:56:16Z")

</div>

On 25 Jul 2011 13h35 WEST, [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> I use this rewrite rule to create SEO friendly urls  
> rewrite ^/search/(.\*).html /search.php?q=$1 last;

Try this:

location ~ ^/(?[^/]_)/(?._).html$ {  
return 302 /$file1.php?q=$file2;  
}

Or the more “standard” approach:

location ~ /(?[^/]_)/(?._).html$ {  
rewrite ^ /$file1.php?q=$file2 last;  
}

— appa

PS: Don’t know which version if Nginx is required to make the first  
rule work. It’s an undocumented feature. It works with 1.0.5. Try it.

---

<div class="post-metadata">

**Author:** ![etrader](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/b5e925/32.png) [@etrader](https://www.ruby-forum.com/u/etrader)\
**Post date:** [July 25, 2011, 3:03pm UTC](https://www.ruby-forum.com/t/general-rule-for-rewrite/209872/3 "2011-07-25T15:03:41Z")

</div>

- location ~ /(?[^/]_)/(?._).html$

- location ~ ^/(?[^/]_)/(?._).html$

— appa

---

<div class="post-metadata">

**Author:** ![etrader](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/b5e925/32.png) [@etrader](https://www.ruby-forum.com/u/etrader)\
**Post date:** [July 25, 2011, 3:08pm UTC](https://www.ruby-forum.com/t/general-rule-for-rewrite/209872/4 "2011-07-25T15:08:38Z")

</div>

Oops. Again ☹

- location ~ ^/(?[^/]_)/(?._).html$

- location ~ ^/(?[^/]_)/(?._).html$

— appa
