Puncte:2

Regulile de rescriere Apache .htaccess în regulile convertite NGINX nu sunt eficiente

drapel pe

Rulez un site web „script PHP” pe aaPanel cu Debian 10 instalat. Toate funcționează în regulă, dar imaginile nu sunt afișate/rupte

Calea /image/ este o regulă de rescriere și se rezolvă în image.php care încarcă imaginea din folderul de încărcări. după convertirea .htaccess la Nginx și adăugați-le în sistem toate căile de imagine către care se duc

www.website.com/image/m/112/112/335757712_1152702765_706821275.jpeg

Calea reală ar trebui să fie

www.website.com/uploads/media/112/112/335757712_1152702765_706821275.jpeg

Mai jos sunt regulile .htaccess

RewriteEngine activat
RewriteCond %{request_filename} -f
RewriteRule ^(.*) $1 [L]
RewriteRule ^(([^/]*)+)?$ index.php?a=$1 [L]

RewriteRule ^welcome/?$ index.php?a=binevenit [NC]

RewriteRule ^stream/?$ index.php?a=stream [NC]
RewriteRule ^stream/logout$ index.php?a=stream&logout [NC]

RewriteRule ^explore/?$ index.php?a=explore [NC]
RewriteRule ^explore/filter/([^/]+)/?$ index.php?a=explore&filter=$1 [NC]
RewriteRule ^explore/popular$ index.php?a=explore&popular [NC]
RewriteRule ^explore/liked$ index.php?a=explore&liked [NC]

RewriteRule ^history/?$ index.php?a=history [NC]

RewriteRule ^upload/?$ index.php?a=upload [NC]

RewriteRule ^pro/?$ index.php?a=pro [NC]

RewriteRule ^stats/?$ index.php?a=stats [NC]
RewriteRule ^stats/filter/([^/]+)/?$ index.php?a=stats&filter=$1 [NC]

RewriteRule ^profile/([^/]+)/?$ index.php?a=profile&u=$1 [NC]
RewriteRule ^profile/([^/]+)/([^/]+)/?$ index.php?a=profile&u=$1&r=$2 [NC]
RewriteRule ^profil/([^/]+)/filter/([^/]+)/?$ index.php?a=profile&u=$1&filter=$2 [NC]

RewriteRule ^notificații/?$ index.php?a=notificări [NC]
RewriteRule ^notificări/filtru/([^/]+)/?$ index.php?a=notificări&filter=$1 [NC]

RewriteRule ^settings/?$ index.php?a=settings [NC]
RewriteRule ^settings/([^/]+)/?$ index.php?a=settings&b=$1 [NC]

RewriteRule ^messages/?$ index.php?a=messages [NC]
RewriteRule ^messages/([^/]+)/([^/]+)/?$ index.php?a=messages&u=$1&id=$2 [NC]

RewriteRule ^track/([^/]+)/?$ index.php?a=track&id=$1 [NC]
RewriteRule ^track/([^/]+)/edit/?$ index.php?a=track&id=$1&type=edit [NC]
RewriteRule ^track/([^/]+)/report/?$ index.php?a=track&id=$1&type=report [NC]
RewriteRule ^track/([^/]+)/stats/?$ index.php?a=track&id=$1&type=stats [NC]
RewriteRule ^track/([^/]+)/likes/?$ index.php?a=track&id=$1&type=likes [NC]
RewriteRule ^track/([^/]+)/stats/filter/([^/]+)/?$ index.php?a=track&id=$1&type=stats&filter=$2 [NC]
RewriteRule ^track/([^/]+)/([^/]+)/?$ index.php?a=track&id=$1&name=$2 [NC]

RewriteRule ^playlist/([^/]+)/?$ index.php?a=playlist&id=$1 [NC]
RewriteRule ^playlist/([^/]+)/edit/?$ index.php?a=playlist&id=$1&edit=true [NC]
RewriteRule ^playlist/([^/]+)/([^/]+)/?$ index.php?a=playlist&id=$1&name=$2 [NC]

RewriteRule ^căutare/filtru/([^/]+)/([^/]+)/?$ index.php?a=search&filter=$1&q=$2 [NC]

RewriteRule ^page/([^/]+)/?$ index.php?a=page&b=$1 [NC]

RewriteRule ^recover/?$ index.php?a=recover [NC]
RewriteRule ^recover/do/?$ index.php?a=recover&r=1 [NC]

RewriteRule ^imagine/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ image.php?t=$1&w=$2&h= $3&src=$4

Mai jos sunt regulile convertite Nginx

Locație / {
  dacă (-e $nume_fișier_cerere){
    rescrie ^/(.*) /$1 pauză;
  }
  rescrie ^/(([^/]*)+)?$ /index.php?a=$1 pauză;
}

locație / bun venit {
  rescrie ^/welcome/?$ /index.php?a=welcome;
}

locație /flux {
  rescrie ^/stream/?$ /index.php?a=stream;
}

locație = /stream/logout {
  rescrie ^(.*)$ /index.php?a=stream&logout;
}

locație /explorare {
  rescrie ^/explore/?$ /index.php?a=explore;
  rescrie ^/explore/filter/([^/]+)/?$ /index.php?a=explore&filter=$1;
}

locație = /explore/popular {
  rescrie ^(.*)$ /index.php?a=explore&popular;
}

locație = /explore/a apreciat {
  rescrie ^(.*)$ /index.php?a=explore&liked;
}

locație / istorie {
  rescrie ^/istorie/?$ /index.php?a=istorie;
}

locație /încărcare {
  rescrie ^/upload/?$ /index.php?a=upload;
}

locație /pro {
  rescrie ^/pro/?$ /index.php?a=pro;
}

locație /stats {
  rescrie ^/stats/?$ /index.php?a=stats;
  rescrie ^/stats/filter/([^/]+)/?$ /index.php?a=stats&filter=$1;
}

locație /profil {
  rescrie ^/profil/([^/]+)/?$ /index.php?a=profil&u=$1;
  rescrie ^/profil/([^/]+)/([^/]+)/?$ /index.php?a=profil&u=$1&r=$2;
  rescrie ^/profil/([^/]+)/filter/([^/]+)/?$ /index.php?a=profil&u=$1&filter=$2;
}

locație/notificări {
  rescrie ^/notificări/?$ /index.php?a=notificări;
  rescrie ^/notificări/filtru/([^/]+)/?$ /index.php?a=notificări&filter=$1;
}

locație / setări {
  rescrie ^/settings/?$ /index.php?a=settings;
  rescrie ^/settings/([^/]+)/?$ /index.php?a=settings&b=$1;
}

locație /mesaje {
  rescrie ^/mesaje/?$ /index.php?a=mesaje;
  rescrie ^/mesaje/([^/]+)/([^/]+)/?$ /index.php?a=mesaje&u=$1&id=$2;
}

locație / track {
  rescrie ^/track/([^/]+)/?$ /index.php?a=track&id=$1;
  rescrie ^/track/([^/]+)/edit/?$ /index.php?a=track&id=$1&type=edit;
  rescrie ^/track/([^/]+)/report/?$ /index.php?a=track&id=$1&type=report;
  rescrie ^/track/([^/]+)/stats/?$ /index.php?a=track&id=$1&type=stats;
  rescrie ^/track/([^/]+)/likes/?$ /index.php?a=track&id=$1&type=like;
  rescrie ^/track/([^/]+)/stats/filter/([^/]+)/?$ /index.php?a=track&id=$1&type=stats&filter=$2;
  rescrie ^/track/([^/]+)/([^/]+)/?$ /index.php?a=track&id=$1&name=$2;
}

locație /listă de redare {
  rescrie ^/playlist/([^/]+)/?$ /index.php?a=playlist&id=$1;
  rescrie ^/playlist/([^/]+)/edit/?$ /index.php?a=playlist&id=$1&edit=true;
  rescrie ^/playlist/([^/]+)/([^/]+)/?$ /index.php?a=playlist&id=$1&name=$2;
}

locație /căutare {
  rescrie ^/search/filter/([^/]+)/([^/]+)/?$ /index.php?a=search&filter=$1&q=$2;
}

locatie /pagina {
  rescrie ^/pagina/([^/]+)/?$ /index.php?a=pagina&b=$1;
}

locație /recuperare {
  rescrie ^/recuperare/?$ /index.php?a=recuperare;
  rescrie ^/recover/do/?$ /index.php?a=recover&r=1;
}

locație / imagine {
  rescrie ^/imagine/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ /image.php?t=$1&w=$2 &h=3$&src=4$;
}

Sunt confuz și nu mă gândesc la nimic care să-mi dau seama. Mulțumesc

Puncte:3
drapel us

Convertoarele regulilor de rescriere sunt de obicei destul de proaste. Este mai bine să implementați apoi în mod nativ nginx. În acest caz, imagine locatia ar fi urmatoarea:

locație ~ ^/imagine/([^/]+)/([^/]+)/([^/]+)/([^/]+)$ {
    try_files /image.php?t=$1&w=$2&h=$3&src=$4 =404;
}

BTW. Sper ca dvs imagine.php are validarea corectă a intrării pentru lățime / înălțime, astfel încât atacatorul nu poate DDoS serverul dvs. solicitând versiunea 1M x 1M a unei imagini...

drapel pe
Da, sunt de acord cu convertoarele de rescriere. Mi-ai dat regula corectă. dupa ce am adaugat regula acum toate imaginile mele au revenit la viata :) Multumesc mult pentru acest raspuns. Am învățat ceva nou astăzi.
drapel cn
În schimb, o „rescriere” este mult mai bună în această situație. `image.php` există întotdeauna. Nu are rost să verifici existența fișierului cu `try_files`...
drapel us
Nu cred că există nicio diferență între `try_files` și `rewrite` aici. Ambele încearcă să deschidă fișierul, doar gestionarea cazurilor de eroare este diferită.

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.