Хорошо, пример 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;
Я считаю, что этот сайт может вам очень помочь:
Тебе нужно
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;
}
}