在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中文網其他相關文章!