перезапись поддоменов nginx - PullRequest
9 голосов
/ 23 марта 2010

Мне нужно правило перезаписи nginx для перезаписи с:

http://some-keyword.example.com на www.example.com/keyword.php?keyword=$some-keyword

, в то время как домен без www впереди все еще переписывает в www.example.com и wwwне принимается за ключевое слово.

Не могли бы вы помочь мне решить эту проблему, как написать эти два правила?

Ответы [ 3 ]

7 голосов
/ 23 марта 2010

Если вы имели в виду перенаправление, то:

server {
  server_name ~^(.*)\.example\.com$ ;

  rewrite ^ http://www.example.com/keyword.php?keyword=$1 redirect;
}

В случае переписать , затем просто сделать

server {
  server_name example.com ~^(.*)\.example\.com$ ;

  rewrite ^ /keyword.php?keyword=$1 break;

#  location /keyword.php {
#    ....
#  }
}
1 голос
/ 14 мая 2013

Если это возможно, я бы только создал 1 сервер (виртуальный хост), который является нормальным domain.com / www.domain.com, а затем использовал бы conf, чтобы переписать остальные

server {
    server_name domain.com www.domain.com;
    # normal handling for files
}

server {
    server_name ~(?<subdomain>[^\.]*).domain.com;
    location / {
        try_files keyword.php?keyword=$subdomain =404;
    }
}

, пожалуйста, сообщитемне, если я что-то пропустил.

1 голос
rewrite ^/list-c-([0-9]+)-k-(.+)-o-1\.html$ /index.php?module=Default&action=List&c=$1&k=$2&o=1 last;
rewrite ^/list-c-([0-9]+)-k-(.+)-o-1-p-(.+)\.html$ /index.php?module=Default&action=List&c=$1&k=$2&o=1&p=$3 last;
rewrite ^/list-c-([0-9]+)-k-(.+)-o-1-price-(.+)\.html$ /index.php?module=Default&action=List&c=$1&k=$2&o=1&price=$3 last;
rewrite ^/list-c-([0-9]+)-k-(.+)-o-(.+)-p-1\.html$ /index.php?module=Default&action=List&c=$1&k=$2&o=$3&p=1 last;
rewrite ^/list-c-([0-9]+)-k-(.+)-o-(.+)-p-(.+)\.html$ /index.php?module=Default&action=List&c=$1&k=$2&o=$3&p=$4 last;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...