有沒有辦法從url中自動刪除文件擴展名?使用htaccess自動重寫html,php,css或任何文件擴展名?
爲前:
用戶類型
www.website.com/page.html
將頁面自動轉換爲:
www.website.com/page
,如果可能有/
:
www.website.com/page/
它必須是自動的,.htaccess
將強制url重寫文件擴展名。
有沒有辦法從url中自動刪除文件擴展名?使用htaccess自動重寫html,php,css或任何文件擴展名?
爲前:
用戶類型
www.website.com/page.html
將頁面自動轉換爲:
www.website.com/page
,如果可能有/
:
www.website.com/page/
它必須是自動的,.htaccess
將強制url重寫文件擴展名。
你試圖做錯誤的方式。你不想刪除擴展名。你想重寫擴展的請求到真實的文件。因此,如果用戶類型,因爲它是要求
http://foo.bar/file.html
要做到這一點,你需要mod_rewrite
(或同等學歷),並根據自己的需要設置重寫規則
http://foo.bar/file
您的服務器將服務。同樣的模塊,還用於製作網址尋找更好的,所以不是
http://foo.bar/script.php?id=34&smth=abc
你可以有
http://foo.bar/script/id/34/smth/abc
甚至
http://foo.bar/script/34/abc
我用這個在.htaccess(index.php文件正在處理的頁面):
RewriteRule ^home/$ index.php?page=home
// Result: http://domain.com/home/
如果你想讓它更加動態:
RewriteRule ^(.*)/$ index.php?page=$1
// Result: http://domain.com/any-page/
更多的數據請求時,您可能需要頁:
RewriteRule ^(.*)/(.*)/$ index.php?page=$1&id=$2
// Result: http://domain.com/data-page/15/
如果你想只得到被叫頁面沒有索引部分:
RewriteRule ^(.*)/$ $1.php
要刪除擴展用戶添加:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteCond %{REQUEST_FILENAME}\.html -f
你需要做兩件事情。首先,您需要將所有鏈接更改爲無擴展名的網址,然後您需要創建一個301重定向來重定向瀏覽器和漫遊器,這些瀏覽器和漫遊器仍然可能包含舊網址,並擴展到新的好看的網址。這是一個新位置的服務器響應,它不是重寫(這是一個僅在服務器上的內部URI重寫)。
RewriteEngine On
RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /(.*)\.(html?|php)
RewriteRule^/%2/ [L,R=301]
這使得它如此,當在瀏覽器中有人類型http://www.website.com/page.html
,他們重定向到http://www.website.com/page/
和新的URL將出現在瀏覽器的地址欄中的URL。
現在,你需要做的是內部的第二件事改變它回到有效的資源,因爲/page/
不存在,它會返回一個404
# need these so we don't clobber legit requests, just pass them through
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule^- [L]
# now check the extensions
RewriteCond %{REQUEST_URI} ^/(.*?)/?$
RewriteCond %{DOCUMENT_ROOT}/%1.php -f
RewriteRule^/%1.php [L]
RewriteCond %{REQUEST_URI} ^/(.*?)/?$
RewriteCond %{DOCUMENT_ROOT}/%1.html -f
RewriteRule^/%1.html [L]
RewriteCond %{REQUEST_URI} ^/(.*?)/?$
RewriteCond %{DOCUMENT_ROOT}/%1.htm -f
RewriteRule^/%1.htm [L]
你只需要把它們放在文檔根目錄下的htaccess文件中。
這可能是一條評論! –
另一方面是否有可能,如果用戶鍵入一個HTML會刪除它? – telexper
是的,你可以用任何方式重寫。如果你確實需要按照任何目的進行描述,那麼就沒有問題了。但是如果你想實現「漂亮的網址」,那麼按我的方式做會減少問題 –