2017-08-24 80 views
0

我正在使用.htaccess文件隱藏URL中的.php擴展名。雖然它工作正常,但我現在還必須在頁面上顯示的所有鏈接中隱藏.php文件擴展名。如何從瀏覽器狀態欄隱藏.php擴展名

例如,當我將鼠標懸停在鏈接上時,其URL顯示狀態欄幷包含.php擴展名。我怎樣才能從鏈接URL中刪除.php,或者完全隱藏瀏覽器狀態欄中的URL?

我用下面的代碼在我的.htaccess文件:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

## don't touch /forum URIs 
RewriteRule ^forums/ - [L,NC] 

## hide .php extension snippet 

# To externally redirect /dir/foo.php to /dir/foo 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC] 
RewriteRule^%1 [R,L] 

# To internally forward /dir/foo to /dir/foo.php 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.*?)/?$ $1.php [L] 

# To remove www header 
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 
RewriteRule ^(.*)$ http://%1/$1 [L,R=301] 

(最初由anubhava基於this answer代碼)

在我的HTML文件看起來像menu1.php的聯繫, menu2.php等。當我點擊這些鏈接時,瀏覽器URL欄中顯示的URL看起來像domain.com/menu1,這很好。但在狀態欄中,當我將鼠標懸停在這些鏈接上時,它仍顯示menu1.php

如何在狀態欄中隱藏.php後綴?我是否必須手動更改所有鏈接中的所有網址,或者有什麼方法可以隱藏它們?

+0

不知道這一點,但只是刪除.php gravi

+0

顯示代碼或任何您輸出超鏈接。 – ficuscr

+0

是的,讓我們看看代碼 – delboy1978uk

回答

-1

隨着的.htaccess URL重寫這樣的:

RewriteEngine on 
RewriteBase /test/ 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php 

你* .PHP鏈接可以,如果它是一個目錄進行訪問。

所以這個環節example.com/page/ actualy打開example.com/page.php

,你不會看到.PHP在瀏覽器狀態欄擴展

0

簡短的回答:是的,你確實需要修改所有的鏈接刪除.php從他們擴展。


你所引用的.htaccess文件包含了做不同的事情兩(相關)部分:

# To externally redirect /dir/foo.php to /dir/foo 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC] 
RewriteRule^%1 [R,L] 

當用戶的瀏覽器請求的URL與.php擴展該重寫規則觸發。該規則導致網絡服務器以external redirect響應相同的URL,但刪除了.php後綴。然後瀏覽器將重新嘗試使用新的URL加載頁面,並且還會在地址欄中顯示新的URL。

# To internally forward /dir/foo to /dir/foo.php 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.*?)/?$ $1.php [L] 

那麼這第二次重寫規則上的網址觸發包括.php擴展,但如果擴展被追加到他們這將符合實際.php文件在你的網絡服務器。然後該規則將.php擴展附加到URL上,並在您的網絡服務器內重新發出請求—但it does so internally,而瀏覽器不知道更改。

因此,實際上,瀏覽器被告知顯示URL 而沒有.php擴展名,但是網絡服務器仍然運行帶有擴展名的PHP腳本。

但是,這一切只發生在後用戶點擊了鏈接。 .htaccess文件中的URL重寫規則不會,也不可能神奇地編輯您的HTML代碼來修復其中包含的URL。因此,要真正隱藏您使用PHP的事實,您需要手動編輯您的HTML(包括PHP腳本自己輸出的任何HTML代碼),以從URL中刪除.php文件擴展名。 (作爲一個副作用,這樣做也會使上面引用的第一個RewriteRule變得沒有必要,但是,您仍然可能想要保留它,以便仍舊包含網址中.php擴展名的舊鏈接仍然可以獲得自動重定向。)