在現(xiàn)代Web開發(fā)中,使用框架和MVC模式已經(jīng)成為主流趨勢(shì)。而PHP作為最流行的Web開發(fā)語(yǔ)言之一,也推出了許多流行的框架,如Laravel, Yii, CodeIgniter等等。這些框架通常需要將路由轉(zhuǎn)發(fā)至控制器進(jìn)行處理,而默認(rèn)情況下,PHP項(xiàng)目的URL包含了index.php這個(gè)入口文件。這不僅對(duì)美觀性造成影響,更影響了SEO。所以,本文將通過nginx去除PHP項(xiàng)目中的index.php,以優(yōu)化URL。
首先,我們需要在nginx中配置重寫規(guī)則。具體來說,就是讓nginx將所有帶有index.php的URL重寫為不包含index.php的URL。以下是示例配置代碼:
location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_index index.php; include fastcgi_params; fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; try_files $uri =404; }其中,第一個(gè)location塊用來處理所有非.php結(jié)尾的URL,其實(shí)就是將請(qǐng)求指向index.php。而第二個(gè)和第三個(gè)location塊用來處理PHP請(qǐng)求,將nginx中的URL地址重寫為不包含index.php的地址。 相信大家都聽說過301和302跳轉(zhuǎn),它們分別代表永久重定向和臨時(shí)重定向。301重定向就是要求搜索引擎收錄新的URL地址,并告訴用戶現(xiàn)有的頁(yè)面已經(jīng)永久下架了,不需要再浪費(fèi)用戶時(shí)間去訪問;而302重定向就是暫時(shí)重定向,告訴搜索引擎,當(dāng)前URL還在使用,只是將這些訪問請(qǐng)求暫時(shí)重定向到新的URL地址,不會(huì)影響搜索引擎中原有的URL記錄。所以,對(duì)于我們?cè)趎ginx中去除index.php的操作,推薦使用301永久重定向,以便SEO優(yōu)化。 下面我們將在nginx的server塊中進(jìn)行相關(guān)配置。例如,當(dāng)我們?cè)L問example.com/index.php時(shí),將自動(dòng)重定向到example.com。代碼如下:
server { listen 80; server_name example.com www.example.com; root /wwwroot/liushijie; index index.php index.html index.htm; if ($request_uri ~* "^(.*/)index\.php$") { return 301 $1; } location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_index index.php; fastcgi_pass unix:/run/php-fpm.sock; include fastcgi_params; } error_page 404 /404.html; location = /404.html { internal; } }以上代碼中,當(dāng)請(qǐng)求的地址是包含index.php的,就使用301永久重定向方式,重定向到不包含index.php的地址。同時(shí),保留原有的location塊用于處理PHP請(qǐng)求,實(shí)現(xiàn)完整的URL去除index.php操作。 總結(jié)一下,在本文中,我們介紹了如何使用nginx去除index.php,從而實(shí)現(xiàn)更友好的URL地址,并提高SEO。同時(shí),我們也介紹了如何在nginx中使用301永久重定向,進(jìn)一步優(yōu)化網(wǎng)站SEO。這些操作的實(shí)現(xiàn)都相對(duì)簡(jiǎn)單,而且能夠帶來明顯的優(yōu)化效果。因此,這些技術(shù)和方法值得Web開發(fā)人員們掌握。
上一篇nginx 布署 php
下一篇nginx 和php