Puncte:0

Rescrierea regex nginx nu funcționează pentru scriptul php

drapel cn

Încerc să blochez execuția scriptului PHP în câteva foldere pentru o instalare WordPress, dar Nginx îmi dă greutăți.

locație = /wp/wp-includes/category.php {
    nega totul;
}

Pot bloca scripturile individuale folosind potrivirea exactă, dar când folosesc regex, nu funcționează.

locație ~* /wp/wp-includes/.*\.php$ {
    nega totul;
}

Nu sunt sigur ce fac greșit?

EDITAȚI | ×

Am următoarele reguli după regulile de mai sus:

Locație / {
    error_page 418 = @cachemiss;
    # Pentru a permite POST pe pagini statice. O să caute cu mine eroare
    pagina_eroare 405 =200 $uri;
    recursive_error_pages on;

    # ocoliți memoria cache pentru șirurile de interogare comune
  if ($arg_s != "") { return 418; } # interogare de căutare
  if ($arg_p != "") { return 418; } # solicitați o postare/pagină după ID
  if ($arg_amp != "") { return 418; } # test de amperi
  if ($arg_preview = "adevărat") { return 418; } # previzualizare postare / pagină

  dacă ($http_cookie ~* "(wordpress_logged_in_|wp\-postpass_|woocommerce_items_in_cart|woocommerce_cart_hash|wptouch_switch_toogle|comment_author_|comment_author_email_)") {
    întoarcere 418;
  }
  # prin trecerea în cache pentru solicitările de postare
  if ($request_method = POST ) {
    întoarcere 418;
  }

  dacă (!-f "$fișier_rachetă") {
    întoarcere 418;
  }

  etag on;
  try_files "$rocket_url" $uri $uri/ /index.php$is_args$args;
}


locație @cachemiss {
  try_files $uri $uri/ /index.php$is_args$args;
}
drapel us
Vă rugăm să afișați rezultatul `nginx -T`, astfel încât să putem vedea configurația completă a nginx.
Ivan Shatsky avatar
drapel gr
Locațiile care se potrivesc @Maximus Regex sunt verificate de la prima până la ultima. Prima locație potrivită este selectată pentru a procesa cererea. Având acea locație __după__ `locația obișnuită ~ \.php$ { ... }` handler PHP îl va face inaccesibil - trebuie să o plasați __înainte de__ handler PHP implicit. Pe de altă parte, locații care se potrivesc exact (`location = { ... }`) au prioritate mai mare față de orice alt tip de locație, astfel încât prima locație va funcționa indiferent unde va fi plasată.
drapel cn
@IvanShatsky Am această locație în partea de sus a fișierului și apoi regula de rescrie wordpress.
Ivan Shatsky avatar
drapel gr
@Maximus Ce vrei să spui prin „regula de rescriere wordpress”?
drapel cn
@IvanShatsky Tocmai mi-am actualizat întrebarea. Vă mulțumesc pentru ajutor.
Ivan Shatsky avatar
drapel gr
@Maximus Nu văd nimic care ar putea fi cauza, dar nu văd nici handlerul PHP (de obicei `location ~ \.php$ { ... }` sau ceva asemănător). Sunteți sigur că se află sub fragmentul de configurare dat, nu deasupra acestuia?

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.