# Regex for rewrite of subdomains

**URL:** <https://www.ruby-forum.com/t/regex-for-rewrite-of-subdomains/229924>\
**Category:** NGINX\
**Created:** [February 14, 2013, 11:05pm UTC](https://www.ruby-forum.com/t/regex-for-rewrite-of-subdomains/229924 "2013-02-14T23:05:50Z")\
**Posts on this page:** 4\
**Page:** 1

<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:** [February 14, 2013, 11:05pm UTC](https://www.ruby-forum.com/t/regex-for-rewrite-of-subdomains/229924/1 "2013-02-14T23:05:50Z")

</div>

I want to rewrite subdomains by adding a separate server for subdomains  
as

server {  
server\_name [domain.com](http://domain.com)  
…  
}  
server {  
server\_name \*.domain.com  
}

but how I can I ass a rewrite rule int the second server to process  
subdomain requests as

[keyword.domain.com/query=some](http://keyword.domain.com/query=some) to  
[domain.com/script.php?query=some&sub=keyword](http://domain.com/script.php?query=some&sub=keyword)

Posted at Nginx Forum:

> **[Regex for rewrite of subdomains](https://forum.nginx.org/read.php?2,236231,236231#msg-236231)**
>
> I want to rewrite subdomains by adding a separate server for subdomains as server { server\_name domain.com ... } server { server\_name \*.domain.com } but how I can I ass a rewrite rule int the second server to process sub

---

<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:** [February 14, 2013, 11:51pm UTC](https://www.ruby-forum.com/t/regex-for-rewrite-of-subdomains/229924/2 "2013-02-14T23:51:59Z")

</div>

I’d take a look at using pattern matching in a map  
( [Module ngx\_http\_map\_module](http://wiki.nginx.org/HttpMapModule) ) and redirecting if the default  
value isn’t found? Maybe not the most effective, but simpler to  
maintain…

Steve

---

<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:** [February 15, 2013, 6:48am UTC](https://www.ruby-forum.com/t/regex-for-rewrite-of-subdomains/229924/3 "2013-02-15T06:48:47Z")

</div>

On 2013-02-14 14:05, etrader wrote:

> I want to rewrite subdomains by adding a separate server for subdomains as  
> […]  
> [keyword.domain.com/query=some](http://keyword.domain.com/query=some) to  
> [domain.com/script.php?query=some&sub=keyword](http://domain.com/script.php?query=some&sub=keyword)

server {  
server\_name \*.domain.com;

if ($http\_host ~\* (.+).domain.com$) {  
set $keyword $1;  
}

if ($request\_uri ~\* ^/query=(.+)) {  
return 301 [http://domain.com/script.php?query=$1&sub=$keyword](http://domain.com/script.php?query=$1&sub=$keyword);  
}  
}

I’m not sure a map would be faster in this case because you don’t need a  
multitude of patterns.

---

<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:** [February 15, 2013, 7:22am UTC](https://www.ruby-forum.com/t/regex-for-rewrite-of-subdomains/229924/4 "2013-02-15T07:22:40Z")

</div>

On Feb 15, 2013, at 9:48 , Darren P. wrote:

> set $keyword $1;  
> }
> 
> if ($request\_uri ~\* ^/query=(.+)) {  
> return 301 [http://domain.com/script.php?query=$1&sub=$keyword](http://domain.com/script.php?query=$1&sub=$keyword);  
> }  
> }

Oh, NO!

server {  
server\_name ~^(?.+).domain.com$;  
return 301  
[http://domain.com/script.php?query=$arg\_query&sub=$keyword](http://domain.com/script.php?query=$arg_query&sub=$keyword);  
}

Or if the server may process something expect “query”:

server {  
server\_name ~^(?.+).domain.com$;

```
if ($arg_query) {
    return 301 

```

[http://domain.com/script.php?query=$arg\_query&sub=$keyword](http://domain.com/script.php?query=$arg_query&sub=$keyword);  
}  
…  
}

–  
Igor S.

> **[F5 NGINX: Built for cloud-native apps. Ready for AI traffic.](https://www.f5.com/products/nginx)**
>
> Deliver modern applications with NGINX. Explore high-performance load balancing, API gateways, and web server solutions trusted by top global enterprises.
