Score:2

Apache .htaccess ไปยังพอร์ต NGINX RewriteRules

ธง cn

ดังนั้นฉันจึงพยายามย้ายพอร์ต เขียนกฎใหม่จาก อาปาเช่ ถึง NGINX แต่ดูเหมือนว่าฉันไม่สามารถพอร์ตออกได้อย่างสมบูรณ์

อันที่จริง บนเซิร์ฟเวอร์ของฉัน ฉันมีไซต์ที่กำลังทำงานอยู่ https://example.com โดเมนและ /var/www/html/ เส้นทางบนเซิร์ฟเวอร์ สิ่งที่ฉันพยายามทำคือติดตั้งสคริปต์ที่กำหนดเองในไดเร็กทอรีย่อยภายใต้ var/www/html/ไดเรกทอรีย่อย เส้นทางและโดเมน https://example.com/subdirectory.

ปัญหาคือกฎการเขียนซ้ำไม่ทำงานและไม่พบแม้แต่ 404 มีข้อผิดพลาดเกิดขึ้น กรุณาช่วยฉัน

อาปาเช่ของฉัน .htaccess ไฟล์:

RewriteRule ^page/?$ หน้า/page.php [L]
RewriteRule ^เกี่ยวกับ/?$ หน้า/เกี่ยวกับ.php [L]
RewriteRule ^privacy-policy/?$ หน้า/privacy-policy.php [L]
RewriteRule ^contact/?$ หน้า/contact.php [L]
RewriteRule ^terms/?$ หน้า/tos.php [L]

RewriteCond %{REQUEST_FILENAME} -f
กฎการเขียนซ้ำ ^(.+) - [PT,L]

RewriteRule ^sitemap-([0-9]+).xml$ ส่วน/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]

และ การกำหนดค่า NGINX ไฟล์ที่ฉันพยายามพอร์ต:

เซิร์ฟเวอร์
{
  ฟัง 80 default_server;
  ฟัง [::]:80 default_server;

  รูท /var/www/html;

  # เพิ่ม index.php ในรายการหากคุณใช้ PHP
  ดัชนี index.php index.html;

  server_name localhost;

  ที่ตั้ง /
  {
    try_files $uri $uri/ =404;
  }

  # ส่งสคริปต์ PHP ไปยังเซิร์ฟเวอร์ FastCGI
  ตำแหน่ง ~ \.php$
  {
    รวมตัวอย่าง/fastcgi-php.conf;
    # # ด้วย php-fpm (หรือซ็อกเก็ตยูนิกซ์อื่น ๆ ):
    fastcgi_pass ยูนิกซ์:/var/run/php/php7.4-fpm.sock;
    # # ด้วย php-cgi (หรือซ็อกเก็ต tcp อื่น ๆ ):
    # fastcgi_pass 127.0.0.1:9000;
  }

  ตำแหน่ง / ไดเร็กทอรีย่อย
  {

    รูท /var/www/html/subdirectory;
    ดัชนี index.php;
    try_files $uri $uri/ /index.php$args$query_string

    ที่ตั้ง ~ ^/(.+)
    {
    }

    ที่ตั้ง/หน้า
    {
      เขียนใหม่ ^/page/?$ /pages/page.php break;
    }

    ที่ตั้ง / เกี่ยวกับ
    {
      เขียนใหม่ ^/about/?$ /pages/about.php break;
    }

    ทำเล/ความเป็นส่วนตัว
    {
      เขียนใหม่ ^/privacy-policy/?$ /pages/privacy-policy.php break;
    }

    สถานที่/ติดต่อ
    {
      เขียนใหม่ ^/contact/?$ /pages/contact.php break;
    }

    ที่ตั้ง/เงื่อนไข
    {
      เขียนใหม่ ^/terms/?$ /pages/tos.php break;
    }

    ที่ตั้ง /
    {
      ถ้า (-e $request_filename)
      {
        เขียนใหม่ ^/sitemap-([0-9]+).xml$ /parts/sitemaps/sitemap-$1.xml ตัวแบ่ง;
      }
      เขียนใหม่ ^/(.*)/(.*)/(.*)/(.*)/?$ /index.php?bank=$1&state=$2&district=$3&branch=$4 ตัวแตก;
      เขียนใหม่ ^/(.*)/(.*)/(.*)/?$ /index.php?bank=$1&state=$2&district=$3 ตัวแตก;
      เขียนใหม่ ^/(.*)/(.*)/?$ /index.php?bank=$1&state=$2 break;
      เขียนใหม่ ^/(.*)/?$ /index.php?bank=$1 ตัวแตก;
    }

    ตำแหน่ง ~ /subdirectory /(.+\.php)$
    {
      รวมตัวอย่าง/fastcgi-php.conf;
      # ด้วย php-fpm (หรือซ็อกเก็ตยูนิกซ์อื่น ๆ ):
      fastcgi_pass ยูนิกซ์:/var/run/php/php7.4-fpm.sock;
      # ด้วย php-cgi (หรือซ็อกเก็ต tcp อื่น ๆ ):
      # fastcgi_pass 127.0.0.1:9000;
    }

  }
}
NoobAvi avatar
cn flag
โปรดช่วยฉันด้วยใครสักคน ฉันเหนื่อยกับการพยายามมาก :(
Score:1
ธง fr

สิ่งนี้น่าจะใช้ได้กับกรณีของคุณ แรงบันดาลใจจากโซลูชันที่มีอยู่ @ https://serversforhackers.com/c/nginx-php-in-subdirectory

ไฟล์กำหนดค่าสุดท้าย:

เซิร์ฟเวอร์
{
  ฟัง 80 default_server;
  ฟัง [::]:80 default_server;

  รูท /var/www/html;

  # เพิ่ม index.php ในรายการหากคุณใช้ PHP
  ดัชนี index.php index.html;

  server_name localhost;

  ที่ตั้ง /
  {
    try_files $uri $uri/ =404;
  }

  # ส่งสคริปต์ PHP ไปยังเซิร์ฟเวอร์ FastCGI
  ตำแหน่ง ~ \.php$
  {
    รวมตัวอย่าง/fastcgi-php.conf;
    # # ด้วย php-fpm (หรือซ็อกเก็ตยูนิกซ์อื่น ๆ ):
    fastcgi_pass ยูนิกซ์:/var/run/php/php7.4-fpm.sock;
    # # ด้วย php-cgi (หรือซ็อกเก็ต tcp อื่น ๆ ):
    # fastcgi_pass 127.0.0.1:9000;
  }

  #สำหรับไดเรกทอรีย่อย
  ที่ตั้ง / ไดเรกทอรีย่อย
  {
    นามแฝง /var/www/html/subdirectory; 
    try_files $uri $uri/ @ไดเรกทอรีย่อย; # ส่งคำขอทั้งหมดไปที่ตำแหน่งแท็ก @subdirectory

    ตำแหน่ง ~ \.php$
    {
      รวมตัวอย่าง/fastcgi-php.conf;
      fastcgi_param SCRIPT_FILENAME $request_filename;
      fastcgi_pass ยูนิกซ์:/var/run/php/php7.4-fpm.sock;
    }
  }

  ตำแหน่ง @ไดเรกทอรีย่อย
  {
    เขียนใหม่ /subdirectory/about$ /subdirectory/pages/about.php สุดท้าย;
    เขียนใหม่ /subdirectory/privacy-policy$ /subdirectory/pages/privacy-policy.php ล่าสุด;
    เขียนใหม่ /subdirectory/contact$ /subdirectory/pages/contact.php สุดท้าย;
    เขียนใหม่ /subdirectory/page$ /subdirectory/pages/page.php สุดท้าย;
    เขียนใหม่ /subdirectory/terms$ /subdirectory/pages/tos.php สุดท้าย;

    เขียนใหม่ ^/subdirectory/sitemap-([0-9]+).xml$ /subdirectory/parts/sitemaps/sitemap-$1.xml สุดท้าย;

    เขียนใหม่ ^/subdirectory/(.*)/(.*)/(.*)/(.*)/?$ /subdirectory/index.php?bank=$1&state=$2&district=$3&branch=$4 สุดท้าย;
    เขียนใหม่ ^/subdirectory/(.*)/(.*)/(.*)/?$ /subdirectory/index.php?bank=$1&state=$2&district=$3 สุดท้าย;
    เขียนใหม่ ^/subdirectory/(.*)/(.*)/?$ /subdirectory/index.php?bank=$1&state=$2 last;
    เขียนใหม่ ^/subdirectory/(.*)/?$ /subdirectory/index.php?bank=$1 สุดท้าย;

  }

}

หากมีข้อสงสัยกรุณาสอบถาม และขอบคุณสำหรับคำถามนี้ ฉันได้เรียนรู้อะไรใหม่ๆ เพราะฉันยังใหม่อยู่เหมือนกัน :P; ไชโย !!

NoobAvi avatar
cn flag
ขอบคุณ. ทำงานได้ดีอย่างแน่นอน

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา