Ok, eine Beispiel-URL ist
http://www.mysite.com/?p=account&view=settings
Der p
Uri ist eine Konstante. Alle URLs haben es.
Das view
ist eines von vielen optionalen Uri.
Ich habe versucht, das Umschreiben von URLs und Regex zu verstehen, aber ich verstehe es einfach nicht. Ich muss wieder Code schreiben, aber leider komme ich immer wieder zurück, nginx.conf
um mehr Strafe zu bekommen.
Mein Ziel ist es, die URLs so umzuschreiben:
http://www.mysite.com/account/view/settings
Ich würde Ihnen die Dinge zeigen, die ich versucht habe, aber es ist nur das Kopieren und Einfügen vieler vorheriger Beispiele, um zu beweisen, wie erbärmlich ich bin, die Konzepte von Regex und URL-Umschreiben zu verstehen.
Wenn jemand ein paar Minuten brauchen könnte, um den Regex-Teil zu erklären, oder mich mit einem guten Tutorial zum Verständnis verknüpfen würde, würde ich mich freuen.
Nein, ich erwarte nicht, dass Sie die Arbeit für mich erledigen, aber ich bitte demütig um ein wenig Hilfe, um die Konzepte des Umschreibens und die in nginx conf zu verwendenden Variablen zu verstehen. Ich kann sehen, dass man heißt $uri
, habe aber keine Ahnung, was das alles bedeutet. Ich muss auch einen regulären Ausdruck hinzufügen, um den direkten Zugriff auf PHP-Skripte im /socket
und zu verweigern /private
, aber den Zugriff über Ajax zuzulassen. Ich bin sicher, dass ich wahrscheinlich alles, was ich über Regex gelernt habe, auf diese Aufgabe anwenden kann.
die standortblöcke meiner 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;
Antworten:
Ich glaube, dass diese Website Ihnen sehr helfen kann:
http://regex101.com/r/uP4nT1
quelle
^\?p=([^&]*)&([^&]*)=([^&]*)
. Jetzt, wo ich das Regex-Muster kenne, weiß ich immer noch nicht, was ich in die nginx.conf einfügen soll.Du brauchst
Wenn Sie die "Ansicht" erfassen möchten, sollten Sie das Programm so gestalten, dass diese Ansicht ein Argument wie das folgende ist: yourwebsite.com/?p=test&second=test2&third=test3, damit Sie Folgendes haben können:
quelle
if ($args ~* "p=[a-z]*&view=[a-z]*")
, das/?
Teil von Anfang an zu verwenden. $ args ist der Teil der URL nach? Zeichen, also passend /? es ist sinnlos.