首頁  >  文章  >  後端開發  >  nginx路由設定取消index.php

nginx路由設定取消index.php

WBOY
WBOY原創
2023-05-22 21:00:071416瀏覽

在Web伺服器中,常常會遇到一些找不到特定檔案或目錄的情況。這時,我們往往會預設使用index.html或index.php作為預設檔來解決這個問題。而在Nginx中,index.php是預設檔之一。

然而,有時候我們並不想在URL中顯示index.php,這個在美化URL或提升網站安全方面都有一定意義。那麼,如何在Nginx中取消index.php呢?

一、修改Nginx設定檔

如果你已經安裝了Nginx,並且想要取消index.php的話,我們需要修改Nginx設定檔。在Ubuntu系統中,Nginx設定檔的路徑為「/etc/nginx/sites-available/default」。

在該檔案中找到「index」指令,也就是:

index index.html index.htm index.nginx-debian.html;

我們需要將其中的「index.php」刪除,變成:

index index.html index.htm index.nginx-debian.html;

或你想讓index.php排在後面,這時你可以放在最後面:

index index.html index.htm index.nginx-debian.html index.php

二、設定Nginx虛擬主機

在Nginx中,每個網站都會有一個虛擬主機。虛擬主機可以為每個不同的網站提供獨立的環境,以便於為每個網站設定不同的功能。這裡我們需要為每個虛擬主機分別配置取消index.php。

1、開啟Nginx的虛擬主機設定檔

sudo nano /etc/nginx/sites-available/default

2、取消虛擬主機中的index.php

server {
  listen 80 default_server;
  listen [::]:80 default_server;

  root /var/www/html;

  # 列出默认文件
  index index.html index.htm;

  # 取消index.php,即移除它
  location / {
    try_files $uri $uri/ =404;
  }

  # 处理PHP脚本
  location ~ .php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.4-fpm.sock;
  }

  # 处理网站资源
  location ~* .(js|css|png|jpg|jpeg|gif|ico)$ {
    expires 30d;
    add_header Cache-Control "public, no-transform";
  }

  # 处理网站图标
  location /favicon.ico {
    access_log off;
    log_not_found off;
  }
}

在上面的設定檔中,我們取消了index .php並設定了其他的預設檔。同時,我們在location區塊中,透過try_files指令來驗證URL是否存在,如不存在則回傳404錯誤。

三、適當修改nginx.conf

在Nginx中,也可以透過修改nginx.conf來取消index.php的顯示。我們需要在http區塊中新增指令:

http {
    ...

    # 将index.php从默认文件列表中删除
    index  index.html index.htm;

    # 取消index.php
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    ...
}

在上述設定中,我們透過將index.php從預設檔案清單中刪除,然後在location區塊中透過try_files指令驗證URL是否存在,如果不存在,則使用”index.php”文件。

四、透過.htaccess取消index.php

如果你使用的是Nginx作為Web伺服器,它不支援.htaccess文件,那麼你可以使用一個類似的檔案:.user. ini。 .user.ini是一個只支援PHP的htaccess檔。透過它,可以設定PHP的配置資訊。將如下的檔案儲存為.user.ini即可:

; PHP settings:
cgi.fix_pathinfo = 0
cgi.fix_pathinfo = false
cgi.fix_pathinfo = off

; nginx settings:
try_files $uri $uri/ /index.php?$query_string;

; User-defined settings:
index index.php index.html index.htm

其中,我們透過嘗試檔案指令try_files來驗證URL是否存在,如果不存在則使用」index.php」檔案。同時,我們設定了其他的預設檔。

五、總結

本文介紹了四種可能的方法來取消nginx中的index.php。你可以根據你自己網站的需求,使用其中一個或多個方法來達到自己的目的。無論使用哪種方法,都是非常簡單和快速的。你可以為你的網站提供一個更人性化的URL,從而吸引更多的訪客,並且提升你的網站的SEO效果。

以上是nginx路由設定取消index.php的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn