首頁 後端開發 PHP問題 nginx路由設定取消index.php

nginx路由設定取消index.php

May 22, 2023 pm 09:00 PM

在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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)