2017-03-04 35 views
1

我正在爲我的一個網站開發.htaccess開發。到目前爲止,這是我的代碼:URL重寫後,使用文件擴展名阻止訪問頁面

RewriteEngine On 
# omit www. 
RewriteCond %{HTTP_HOST} ^www\.website\.com [NC] 
RewriteRule ^(.*)$ http://website.com/$1 [L,R=301] 

# now omit.php extension from page names 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

這一切工作正常,該網站提供了SANS www.,所有的.php擴展刪除。我還從標記中的頁面鏈接中刪除了.php擴展,並且再次按照我的意願提供頁面,例如website.com/news.php現在顯示爲website.com/news

很酷。

我旁邊意識到的是,該網頁仍然能夠通過在頁面名稱與文件擴展名輸入訪問,所以website.com/news.php拉起頁在地址欄中的文件擴展名是website.com/news.php

是有沒有辦法來防止這種情況?因此,如果website.com/news.php被輸入到地址欄中,瀏覽器將提供website.com/news

回答

1

如果website.com/news.php輸入到地址欄,瀏覽器將成爲了website.com/news

當然,你可以添加一個重定向規則刪除.php

RewriteEngine On 

# omit www. 
RewriteCond %{HTTP_HOST} ^www\.website\.com [NC] 
RewriteRule ^(.*)$ http://website.com/$1 [L,R=301,NE] 

# To externally redirect /dir/file.php to /dir/file 
RewriteCond %{THE_REQUEST} \s/+(.+?)\.php[\s?] [NC] 
RewriteRule^/%1 [R=302,NE,L] 

# To internally redirect /dir/file to /dir/file.php 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.+?)/?$ $1.php [L] 
+0

@wordman:這篇鍛鍊? – anubhava

+0

我直到今天才看到你的帖子,我現在就試試看,並告訴你它是如何工作的,謝謝! – wordman

+1

完美的作品,非常感謝你的幫助!現在我必須研究代碼以充分理解它的工作原理。非常感謝! – wordman