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

преобразование правил перезаписи URL htaccess в nginx

Как я могу преобразовать мои правила htaccess здесь

RewriteRule ^/?([^/]+)/([^/]+)/?$ page-1.php?a=$1&b=$2 [L,QSA]
RewriteRule ^/?([^/]+)/([^/]+)/([^/]+)/?$ page-2.php?a=$1&b=$2&c=$3 [L,QSA]

в правила nginx? Я пробовал использовать конвертеры, но получил следующее

winginx
location / { 
rewrite ^/?([^/]+)/([^/]+)/?$ /page-1.php?a=$1&b=$2 break; 
rewrite ^/?([^/]+)/([^/]+)/([^/]+)/?$ /page-2.php?a=$1&b=$2&c=$3 break;
}


anilcetin
rewrite ^/?([^/]+)/([^/]+)/?$ /page-1.php?a=$1&b=$2 last;
rewrite ^/?([^/]+)/([^/]+)/([^/]+)/?$ /page-2.php?a=$1&b=$2&c=$3 last;

Но ни один из них на самом деле не работал. В чем проблема?

в моем коде здесь страница вроде

domain.com?page-1.php?a=a&b=b превратится в domain.com/a/b

domain.com?page-2.php?a=a&b=b&c=c в domain.com/a/b/c

Эта проблема

В ваших комментариях говорится, что вас устраивают регулярные выражения и операторы перезаписи, и вам просто нужна помощь с частями, связанными с Nginx и блоками местоположения.

Быстрый взгляд на них не вселяет во меня уверенности, что вы все исправили. Я ожидал чего-то большего - обратите внимание, что это определенно неверно, определенно не оптимально и может даже не пройти проверку "nginx -t".

rewrite ^/([0-9a-zA-Z_\-\s\+]+)?a=([0-9a-zA-Z_\-\s\+]+)&b=([0-9a-zA-Z_\-\s\+]+)*c=([0-9a-zA-Z_\-\s\+]+)  /$2/$3/$4;

Общая идея здесь - группа захвата для каждой части URL-адреса, которая вас интересует, плюс одна передняя, ​​которая не используется. Первый - просто потому, что я не очень разбираюсь в регулярных выражениях и мне проще скопировать и вставить что-то из одной из моих собственных конфигураций, которые могут работать.

Расположение Nginx и RegEx

Nginx переписать могут находиться в контексте сервера или местоположения и работать в порядке, указанном в файле конфигурации. Для вас я бы, вероятно, поместил их в верхней части файла конфигурации сайта, над блоками местоположения.

server {
  server_name example.com;
  listen 80;

  rewrite ^/?([^/]+)/([^/]+)/?$ /page-1.php?a=$1&b=$2 break; 
  rewrite ^/?([^/]+)/([^/]+)/([^/]+)/?$ /page-2.php?a=$1&b=$2&c=$3 break;

  location / { 
    # Whatever you want in here to handle the rewritten or normally requested URLs
    # root /var/www/html;
    # proxy_pass 1.2.3.4;
  }

  location /a {
    # If you want to handle specific URLs you can do it in another location block
  }
}

Общий комментарий к вашему вопросу не очень точен и не свидетельствует о том, что вы предприняли какие-либо усилия, чтобы решить проблему самостоятельно.