2015-01-09 36 views
1

美好的一天。通過htaccess重定向404錯誤發送用戶上一級

我最近採取了一個新的網站來管理,看着谷歌上的網站管理員工具,我注意到一個很大的數字(9000左右)的404錯誤,深深地看,我匹配一個奇怪的模式: 在一些文章中,我已經注意到,一些圖像點與建立這樣一個鏈接頁面:

www.server.com/year/month/category/subcategory/somecharacter/ 

這實際上需要一個404頁,但是,如果我刪除最後一個目錄/somecharacter/,一切都好。

是否可以更改htaccess,使用戶進入404頁面,只需「上一層」並重定向到頁面的父頁面?

因此,如果最後沒有顯示任何頁面,用戶會被重定向到主頁。

在此先感謝。

回答

1

如果當前URI導致404,則可以使用此通用和重新驅動規則繼續上一級。當找到當前URI時,它將停止。

RewriteEngine On 

## if current file/directory doesn't exist then 
## forward to the parent directory of the current REQUEST_URI 
RewriteCond %{DOCUMENT_ROOT}/$0 !-f 
RewriteCond %{DOCUMENT_ROOT}/$0 !-d 
RewriteRule ^(?:(.+?)/)?[^/]+/?$ /$1 [L,NE,R=302] 
1

嘗試:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]+/[^/]+/[^/]+/[^/]+/)[^/]+/?$ /$1 [L,R=301] 

如果你有其他重寫規則,可能需要有這樣的規則他們面前。

+0

這是我的例子中的確切情況,但我想編寫一個更通用的規則,我得到使用parentesys的POI和$ 1,我怎樣才能從剝離的最後/.../網址?可能嗎? –

+0

@ MatteoBononi'peorthyr'嘗試用'(。+ /)' –

+0

代替'([^ /] +/[^ /] +/[^ /] +/[^ /] + /謝謝,它不會像我預期的那樣工作,但是現在我已經有了一個基礎來開始感謝! –