Назад | Перейти на главную страницу

правила перезаписи nginx с регулярным выражением, применяемым только к одному подкаталогу

Я был разочарован в течение нескольких дней, пытаясь понять это, поэтому любой совет / помощь будет очень благодарен!

Я недавно добавил раздел под названием /links на сайт по адресу somehost.com но, похоже, не может получить правила перезаписи для этого каталога (см. ниже). Все остальные пути домена работают нормально (скажем, например somehost.com/browse/video/whatever перенаправляет на somehost.com/by/whatever/ нормально) и все другие правила перезаписи, похоже, все еще работают отлично, это просто недавно добавленные location /links/ раздел в мою конф, где все разваливается.

Следующая conf не работает в строке 27 - Ошибка, которую я получаю при использовании service nginx restart является: директива rewrite не завершается знаком ";" но я вижу, что конечная строка заканчивается; поэтому я не уверен, что случилось. Возможно, что-то с регулярным выражением?

Мой nginx conf ниже. Любые идеи о том, что изменить, чтобы получить URL-адреса, такие как somehost.com/links/page/3 или somehost.com/links/tag/sometopic/page/2 работает?

Спасибо!

server {
  server_name somehost.com;
  listen 80;
  root /var/www/somehost.com;
  include /etc/nginx/php.conf;

  location / {
    index index.php;
    access_log /var/log/nginx/somehost.com.log;

    #handle old variable redirects first, before dealing with current permalinks
    rewrite ^/?browse/video/(.*) /by/$1 permanent;

    #set a 30-day expires header on static files for cache
    if (-f $request_filename) { expires 30d; break; }    

    #do current permalinks with args
    try_files $uri $uri/ /index.php?$args;
   }

  #handle static redirects from old URLs and rewrite
  location /browse/title { rewrite ^(.*)$ /browse/?orderby=title redirect; }
  location /browse/featured { rewrite ^(.*)$ /by/featured/ permanent; }

  #handle /links permalinks etc
  location /links/ {
    rewrite "tag/(.+)/page/([0-9]{1,})/s/([^/]+)(/)?"$ /?tag=$1&page=$2&s=$3 break;
    rewrite "tag/(.+)/page/([0-9]{1,})(/)?" /?tag=$1&page=$2 break;
    rewrite tag/(.+)/s/([^/]+)(/)? /?tag=$1&s=$2 break;
    rewrite tag/([^/]+)(/)? /?tag=$1 break;
    rewrite rss/([^/]+) /rss.php?tag=$1 break;
    rewrite rss /rss.php break;
    rewrite "page/([0-9]{1,})/s/([^/]+)" /index.php?page=$1&s=$2 break;
    rewrite "page/([0-9]{1,})" /index.php?page=$1 break;
    rewrite go/([0-9]+) /ir.php?id=$1 break;
  }

}

Доллар находится за пределами кавычек в первом регулярном выражении вашей перезаписи.