2015-12-24 61 views
0

我想從我的網址中刪除.html擴展,它位於特定目錄中,並將它們重定向301。重定向301 - 從網址中刪除.html擴展

這裏的結構是怎樣的樣子:

mysite.com/category/nameofcategory/pagenumber.html 

的事情是,nameofcategorypagenumber可以是任何字母或數字。

你能幫我解決嗎?

回答

0

我不會建議讓您的內容散佈在不同文件夾中的許多HTML文件中。如果您想要更改頁面佈局,這變得非常不切實際。

將內容存儲在數據庫中是一個更好的解決方案。如果這是不可能的,那麼html文件可能只包含格式化的文本內容,並且當請求頁面時,後端腳本可以將該內容嵌入佈局。

這需要在Apache配置中啓用mod_rewrite模塊。

在這兩種情況下,所有的請求將通過後端腳本進行路由和的.htaccess可能是這個樣子:

RewriteEngine on 
RewriteRule ^category/([^/.]+)/([^/.]+)/?$ index.php?category=$1&page=$2 [L] 

正則表達式的這一部分:([^/.]+)比賽和捕捉那並不是一個字符串不包含字符/或。並且是1個字符長或更長。捕獲的字符串可以用$ 1,$ 2等參考。

現在像mysite.com/category/foo/bar漂亮的網址工作。另外,我們需要定義一個重定向以「.html」結尾的舊網址的規則。可能是這個樣子所需的規則:

RewriteRule ^category/([^/.]+)/([^/.]+).html$ category/$1/$2 [R=301,L] 

有一點要記住,而測試和調整重定向是重定向可以在瀏覽器中進行測試時,這可能會導致混亂的結果中緩存。

0

要刪除URL上的.html延伸和301重定向到擴展名的URL,你可以嘗試在.htaccess在「指定目錄」執行以下操作:

RewriteEngine On 
RewriteBase /specific-directory 
RewriteRule ^(.*)\.html$ $1 [R=301,L]