Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Currently I'm using

location /login {
                rewrite ^/login/$ /login.php last;
                rewrite ^/login$ /login.php last;

to rewrite and I was wondering if this was also possible in one statement. I tried rewrite ^/login(/)$ /login.php last; but it didn't work.

Also I noticed since I started using rewrites that some of my css paths are broken because I used a relative paths. I will convert all of them to absolute paths but asked myself if there a more implications when using rewrites that I would need to be aware of.


This is how I handle the .php

location ~ \.php$ {
   if (!-f $request_filename) {
      return 404;
   fastcgi_index index.php;
   include fastcgi_params;
   try_files $uri $uri/ /index.php;
share|improve this question
up vote 3 down vote accepted
location /login {
    rewrite ^/login/?$ /login.php last;

In RegEx, a question mark makes the preceding token optional.

share|improve this answer
Thanks quanta, I tried your solution but now the login.php will be downloaded when I enter Let me edit my post to show how I handle php.. – Frank Vilea Sep 20 '11 at 2:31
I got it to work by removing the ~ in location to location /login { – Frank Vilea Sep 20 '11 at 2:42
~ is only for case sensitive matching. In your case, /login is enough. But I wonder why you put a ~ causes error when parsing php. – quanta Sep 20 '11 at 2:58

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.