rewrite rule help.

Igor Sysoev igor at sysoev.ru
Fri Apr 1 10:22:11 MSD 2011


On Fri, Apr 01, 2011 at 05:01:42AM +0200, Steve Zhuo wrote:
> hi
> 
> i'm running nginx with tomcat.  I tried to rewrite all the incoming url
> with /en appended. ex: www.example.com/main/index.html will get rewrite
> to www.example.com/en/main/index.html
> 
> Following is my nginx config:
> 
> 
> upstream www.example.com   {
>         server localhost:8080;
> }
> 
>  location ^~ / {
>             index  index.html index.htm;
>             rewrite ^ http://www.example.com/en$request_uri break;
>         }
> 
>  location ^~ /en {
>             index  index.html index.htm;
>             proxy_pass      http://www.example.com/;
>         }
> 
> When i just do www.example.com/main/index.html, it rewrites to the new
> url and page shows.  But when i tried to write an url without .htm or
> .html extension, the browser complains about page not found and return
> 404. such as "www.example.com/main/new"  I got the 404 error on my
> Tomcat log.  Before this rewrite rule, the page can be loaded without
> any problem.
> 
> here is my tomcat config:
> 
> <servlet-mapping>
> <servlet-name>dir</servlet-name>
> <url-pattern>*.htm</url-pattern>
> <url-pattern>/en/*</url-pattern>
> </servlet-mapping>
> <error-page>
> <error-code>404</error-code>
> <location>/errors/503.htm</location>
> </error-page>

  location ^~ / {
      rewrite ^ http://www.example.com/en$request_uri permanent;
  }
 
  location ^~ /en {
      proxy_pass      http://www.example.com;
  }


-- 
Igor Sysoev
http://sysoev.ru/en/



More information about the nginx mailing list