Điểm:2

Apache .htaccess tới cổng NGINX RewriteRules

lá cờ cn

Vì vậy, tôi thực sự đang cố gắng chuyển viết lại quy tắc từ apache đến NGINX nhưng có vẻ như tôi không thể chuyển hoàn toàn.

Trên thực tế, trên máy chủ của tôi, tôi có một trang đang chạy trên https://example.com tên miền và /var/www/html/ đường dẫn trên máy chủ. Những gì tôi đang cố gắng làm là cài đặt tập lệnh tùy chỉnh trong thư mục con bên dưới var/www/html/thư mục con đường dẫn và tên miền https://example.com/subdirectory.

Vấn đề là các quy tắc viết lại không hoạt động và thậm chí không tìm thấy 404 lỗi đang xảy ra. Vui lòng giúp tôi.

Apache của tôi .htaccess tập tin:

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$ part/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]

Cấu hình NGINX tập tin mà tôi đã cố gắng chuyển:

người phục vụ
{
  nghe 80 default_server;
  lắng nghe [::]:80 default_server;

  gốc/var/www/html;

  # Thêm index.php vào danh sách nếu bạn đang sử dụng PHP
  chỉ mục index.php index.html;

  máy chủ_tên máy chủ cục bộ;

  địa điểm /
  {
    try_files $uri $uri/ =404;
  }

  # truyền tập lệnh PHP tới máy chủ FastCGI
  vị trí ~ \.php$
  {
    bao gồm đoạn trích/fastcgi-php.conf;
    # # Với php-fpm (hoặc các ổ cắm unix khác):
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    # # Với php-cgi (hoặc các ổ cắm tcp khác):
    # fastcgi_pass 127.0.0.1:9000;
  }

  vị trí/thư mục con
  {

    thư mục gốc /var/www/html/thư mục con;
    chỉ số index.php;
    try_files $uri $uri/ /index.php$args$query_string

    vị trí ~ ^/(.+)
    {
    }

    vị trí/trang
    {
      viết lại ^/page/?$ /pages/page.php break;
    }

    vị trí / về
    {
      viết lại ^/about/?$ /pages/about.php break;
    }

    vị trí / quyền riêng tư
    {
      viết lại ^/privacy-policy/?$ /pages/privacy-policy.php break;
    }

    địa điểm/liên hệ
    {
      viết lại ^/contact/?$ /pages/contact.php break;
    }

    địa điểm/điều khoản
    {
      viết lại ^/terms/?$ /pages/tos.php break;
    }

    địa điểm /
    {
      nếu (-e $request_filename)
      {
        viết lại ^/sitemap-([0-9]+).xml$ /parts/sitemaps/sitemap-$1.xml break;
      }
      viết lại ^/(.*)/(.*)/(.*)/(.*)/?$ /index.php?bank=$1&state=$2&district=$3&branch=$4 break;
      viết lại ^/(.*)/(.*)/(.*)/?$ /index.php?bank=$1&state=$2&district=$3 break;
      viết lại ^/(.*)/(.*)/?$ /index.php?bank=$1&state=$2 break;
      viết lại ^/(.*)/?$ /index.php?bank=$1 break;
    }

    vị trí ~ /thư mục con /(.+\.php)$
    {
      bao gồm đoạn trích/fastcgi-php.conf;
      # Với php-fpm (hoặc các ổ cắm unix khác):
      fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
      # Với php-cgi (hoặc các ổ cắm tcp khác):
      # fastcgi_pass 127.0.0.1:9000;
    }

  }
}
NoobAvi avatar
lá cờ cn
Giúp em với, em mệt quá :(
Điểm:1
lá cờ fr

Điều này sẽ làm việc cho trường hợp của bạn. Lấy cảm hứng từ giải pháp có sẵn @ https://serversforhackers.com/c/nginx-php-in-subdirectory

Tập tin cấu hình cuối cùng:

người phục vụ
{
  nghe 80 default_server;
  lắng nghe [::]:80 default_server;

  gốc/var/www/html;

  # Thêm index.php vào danh sách nếu bạn đang sử dụng PHP
  chỉ mục index.php index.html;

  máy chủ_tên máy chủ cục bộ;

  địa điểm /
  {
    try_files $uri $uri/ =404;
  }

  # truyền tập lệnh PHP tới máy chủ FastCGI
  vị trí ~ \.php$
  {
    bao gồm đoạn trích/fastcgi-php.conf;
    # # Với php-fpm (hoặc các ổ cắm unix khác):
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    # # Với php-cgi (hoặc các ổ cắm tcp khác):
    # fastcgi_pass 127.0.0.1:9000;
  }

  # cho thư mục con
  vị trí/thư mục con
  {
    bí danh /var/www/html/thư mục con; 
    try_files $uri $uri/ @thư mục con; # gửi tất cả yêu cầu đến vị trí được gắn thẻ @subdirectory

    vị trí ~ \.php$
    {
      bao gồm đoạn trích/fastcgi-php.conf;
      fastcgi_param SCRIPT_FILENAME $request_filename;
      fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }
  }

  vị trí @thư mục con
  {
    viết lại /subdirectory/about$ /subdirectory/pages/about.php cuối cùng;
    viết lại /subdirectory/privacy-policy$ /subdirectory/pages/privacy-policy.php cuối cùng;
    viết lại /subdirectory/contact$ /subdirectory/pages/contact.php cuối cùng;
    viết lại /subdirectory/page$ /subdirectory/pages/page.php cuối cùng;
    viết lại /subdirectory/terms$ /subdirectory/pages/tos.php cuối cùng;

    viết lại ^/subdirectory/sitemap-([0-9]+).xml$ /subdirectory/parts/sitemaps/sitemap-$1.xml cuối cùng;

    viết lại ^/subdirectory/(.*)/(.*)/(.*)/(.*)/?$ /subdirectory/index.php?bank=$1&state=$2&district=$3&branch=$4 cuối cùng;
    viết lại ^/subdirectory/(.*)/(.*)/(.*)/?$ /subdirectory/index.php?bank=$1&state=$2&district=$3 cuối cùng;
    viết lại ^/subdirectory/(.*)/(.*)/?$ /subdirectory/index.php?bank=$1&state=$2 last;
    viết lại ^/subdirectory/(.*)/?$ /subdirectory/index.php?bank=$1 cuối cùng;

  }

}

Đối với bất kỳ nghi ngờ xin vui lòng hỏi. Ngoài ra, nhờ bạn cho một câu hỏi như vậy, tôi đã học được điều gì đó mới vì tôi cũng là người mới :P; Chúc mừng!!

NoobAvi avatar
lá cờ cn
Cảm ơn. Làm việc hoàn toàn tuyệt vời.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.