Puncte:2

Apache .htaccess la portul NGINX RewriteRules

drapel cn

Deci, chiar încerc să port Rescrie regulile din Apache la NGINX dar se pare că nu sunt capabil să port complet.

De fapt, pe serverul meu am un site care rulează https://example.com domeniul si /var/www/html/ calea pe server. Ceea ce încerc să fac este să instalez un script personalizat într-un subdirector sub var/www/html/subdirector calea si domeniul https://example.com/subdirectory.

Problema este că regulile de rescriere nu funcționează și chiar 404 nu au fost găsite apar erori. Va rog frumos ajutati-ma.

Apache al meu .htaccess fişier:

RewriteRule ^page/?$ pages/page.php [L]
RewriteRule ^about/?$ pages/about.php [L]
RewriteRule ^privacy-policy/?$ pages/privacy-policy.php [L]
RewriteRule ^contact/?$ pages/contact.php [L]
RewriteRule ^terms/?$ pages/tos.php [L]

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.+) - [PT,L]

RewriteRule ^sitemap-([0-9]+).xml$ parts/sitemaps/sitemap-$1.xml [QSA,L]

RewriteRule ^(.*)/(.*)/(.*)/(.*)/?$ index.php?bank=$1&state=$2&district=$3&branch=$4 [QSA,L]
RewriteRule ^(.*)/(.*)/(.*)/?$ index.php?bank=$1&state=$2&district=$3 [QSA,L]
RewriteRule ^(.*)/(.*)/?$ index.php?bank=$1&state=$2 [QSA,L]
RewriteRule ^(.*)/?$ index.php?bank=$1 [QSA,L]

și Configurarea NGINX fișier pe care am încercat să îl port:

Server
{
  asculta 80 default_server;
  asculta [::]:80 default_server;

  rădăcină /var/www/html;

  # Adăugați index.php la listă dacă utilizați PHP
  index index.php index.html;

  nume_server gazdă locală;

  Locație /
  {
    try_files $uri $uri/ =404;
  }

  # treceți scripturile PHP către serverul FastCGI
  locație ~ \.php$
  {
    include snippets/fastcgi-php.conf;
    # # Cu php-fpm (sau alte socket-uri Unix):
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    # # Cu php-cgi (sau alte socket-uri tcp):
    # fastcgi_pass 127.0.0.1:9000;
  }

  locație/subdirector
  {

    rădăcină /var/www/html/subdirector;
    index index.php;
    try_files $uri $uri/ /index.php$args$query_string

    locație ~ ^/(.+)
    {
    }

    locație /pagină
    {
      rescrie ^/page/?$ /pages/page.php pauză;
    }

    locație /despre
    {
      rescrie ^/about/?$ /pages/about.php pauză;
    }

    locație / confidențialitate
    {
      rescrie ^/privacy-policy/?$ /pages/privacy-policy.php pauză;
    }

    locatie/contact
    {
      rescrie ^/contact/?$ /pages/contact.php pauză;
    }

    locație/termeni
    {
      rescrie ^/terms/?$ /pages/tos.php pauză;
    }

    Locație /
    {
      dacă (-e $nume_fișier_cerere)
      {
        rescrie ^/sitemap-([0-9]+).xml$ /parts/sitemaps/sitemap-$1.xml break;
      }
      rescrie ^/(.*)/(.*)/(.*)/(.*)/?$ /index.php?bank=$1&state=$2&district=$3&branch=$4 break;
      rescrie ^/(.*)/(.*)/(.*)/?$ /index.php?bank=$1&state=$2&district=$3 break;
      rescrie ^/(.*)/(.*)/?$ /index.php?bank=$1&state=$2 break;
      rescrie ^/(.*)/?$ /index.php?bank=$1 pauză;
    }

    locație ~ /subdirector /(.+\.php)$
    {
      include snippets/fastcgi-php.conf;
      # Cu php-fpm (sau alte socket-uri Unix):
      fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
      # Cu php-cgi (sau alte socket-uri tcp):
      # fastcgi_pass 127.0.0.1:9000;
    }

  }
}
NoobAvi avatar
drapel cn
Va rog sa ma ajutati pe cineva, m-am saturat sa incerc :(
Puncte:1
drapel fr

Acest lucru ar trebui să funcționeze pentru cazul dvs. Inspirat din soluția disponibilă @ https://serversforhackers.com/c/nginx-php-in-subdirectory

Fișierul de configurare final:

Server
{
  asculta 80 default_server;
  asculta [::]:80 default_server;

  rădăcină /var/www/html;

  # Adăugați index.php la listă dacă utilizați PHP
  index index.php index.html;

  nume_server gazdă locală;

  Locație /
  {
    try_files $uri $uri/ =404;
  }

  # treceți scripturile PHP către serverul FastCGI
  locație ~ \.php$
  {
    include snippets/fastcgi-php.conf;
    # # Cu php-fpm (sau alte socket-uri Unix):
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    # # Cu php-cgi (sau alte socket-uri tcp):
    # fastcgi_pass 127.0.0.1:9000;
  }

  # pentru subdirector
  locație/subdirector
  {
    alias /var/www/html/subdirector; 
    try_files $uri $uri/ @subdirector; # trimiteți toată cererea către locația etichetată @subdirectory

    locație ~ \.php$
    {
      include snippets/fastcgi-php.conf;
      fastcgi_param SCRIPT_FILENAME $request_filename;
      fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }
  }

  locație @subdirector
  {
    rescrie ultimul /subdirectory/about$ /subdirectory/pages/about.php;
    rescrie ultimul /subdirectory/privacy-policy$ /subdirectory/pages/privacy-policy.php;
    rescrie ultimul /subdirectory/contact$ /subdirectory/pages/contact.php;
    rescrie ultimul /subdirector/page$ /subdirectory/pages/page.php;
    rescrie ultimul /subdirector/terms$ /subdirectory/pages/tos.php;

    rescrie ^/subdirector/sitemap-([0-9]+).xml$ /subdirectory/parts/sitemaps/sitemap-$1.xml ultimul;

    rescrie ^/subdirector/(.*)/(.*)/(.*)/(.*)/?$ /subdirectory/index.php?bank=$1&state=$2&district=$3&branch=$4 ultimul;
    rescrie ^/subdirector/(.*)/(.*)/(.*)/?$ /subdirectory/index.php?bank=$1&state=$2&district=$3 ultimul;
    rescrie ^/subdirector/(.*)/(.*)/?$ /subdirectory/index.php?bank=$1&state=$2 ultimul;
    rescrie ^/subdirector/(.*)/?$ /subdirector/index.php?bank=$1 ultimul;

  }

}

Pentru orice nelămuriri vă rugăm să întrebați. De asemenea, multumesc voua pentru o astfel de intrebare, am ajuns sa invat ceva nou de cand sunt si eu nou :P; Noroc !!

NoobAvi avatar
drapel cn
Mulțumiri. Funcționează absolut grozav.

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.