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

Перезапись url nginx. я просто не понимаю

Хорошо, пример URL-адреса

http://www.mysite.com/?p=account&view=settings

в p uri - постоянная величина. все URL-адреса есть.

в view является одним из многих необязательных uri.

Я пытался понять перезапись URL и регулярное выражение, но я просто не понимаю. Мне нужно вернуться к написанию кода, но, к сожалению, я продолжаю возвращаться к nginx.conf для большего наказания.

Моя цель - переписать URL-адреса так:

http://www.mysite.com/account/view/settings

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

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

Нет, я не ожидаю, что вы сделаете эту работу за меня, но я смиренно прошу небольшой помощи в понимании концепций перезаписи и переменных, используемых в nginx conf. Я вижу, что это называется $uri, но понятия не имею, что это значит. Мне также нужно добавить регулярное выражение, чтобы запретить прямой доступ к PHP-скриптам в /socket и /private, но разрешить доступ через ajax. Я уверен, что, вероятно, смогу применить все знания о регулярных выражениях к этой задаче.

блоки местоположения моего nginx conf

location ~ \.(hh|php)$ {
    fastcgi_keep_conn on;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include        fastcgi_params;
}
location ~* .(png|gif|ico|css|js)$ {
    expires 365d;
}   
location ~ .(aspx|jsp|cgi)$ {
    return 410;
}
location /socket {
    return 405;
}
location /private {
    return 405;
}   
location / {
    # include /etc/nginx/naxsi.rules;
    index index.php;
    try_files    $uri $uri/ /index.php?q=$uri?;
    limit_req zone=one burst=5;
}

location /Denied {
    return 418;
}
error_page 500 /error.php?type=500;
error_page 501 /error.php?type=501;
error_page 502 /error.php?type=502;
error_page 503 /error.php?type=503;
error_page 400 /error.php?type=400;
error_page 401 /error.php?type=401;
error_page 403 /error.php?type=403;
error_page 404 /error.php?type=404;
error_page 405 /error.php?type=405;
error_page 406 /error.php?type=406;
error_page 413 /error.php?type=413;
error_page 414 /error.php?type=414;
error_page 418 /error.php?type=418;

Я считаю, что этот сайт может вам очень помочь:

http://regex101.com/r/uP4nT1

Тебе нужно

location /yourlocations {
   if ($args ~* "p=[a-z]*&view=[a-z]*") {
        rewrite ^ http://yourwebsite.com/$arg_p/$arg_view? last;
        }

}

Также, если вы хотите зафиксировать "представление", вы должны сделать программу, в которой представление является аргументом вроде: yourwebsite.com/?p=test&second=test2&third=test3, чтобы у вас было следующее:

location /yourlocations {
       if ($args ~* "p=[a-z]*&second=[a-z]*&third=[a-z]*") {
            rewrite ^ http://yourwebsite.com/$arg_p/$arg_second/$arg_third? last;
       }

}