2017-08-27 77 views
0

所以我非常努力地試圖瞭解這兩段代碼之間的差異,但我找不到它。我試圖從url中刪除「.html」擴展名,但我總是看到兩個不同的代碼被用於不同的網站。這兩個.htaccess代碼有什麼區別?

第一個代碼是:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)\.html$ http://example.com/$1 [R=301,L] 

第二個代碼是:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^\.]+)$ $1.html 

從我的理解,第一代碼似乎取代曾經是在html的路徑中的任何字符(例如。example.com/home.html)將其替換爲不帶.html擴展名的文件(例如example.com/home)。然而,在許多不同的網站中,兩者似乎都在不斷出現。這就是爲什麼我想詢問是否有人知道兩者之間的差異以及這些代碼實際上意味着什麼?

任何幫助,將不勝感激。

回答

2

首先匹配在.html結尾的路徑中的任何請求,並告訴它應該請求相同的路徑,在example.com沒有.html瀏覽器。

第二個匹配對任何路徑的任何請求,並通知服務器將.html添加到其末尾並將其交付給瀏覽器。

+0

這也是我的想法,但在許多網站他們說,第二個代碼是在它的結尾刪除.html。 –

+0

從某種角度來說,這是真的。它在工作結束時使URL不帶'.html'。 – Quentin

+0

技術上這兩個代碼都可以工作嗎?或者是第一個更可靠? –