2009-11-24 40 views
1

如何將這樣的鏈接(下面)重定向到404錯誤頁面?htaccess 404錯誤重定向爲/ url/sub/.html,如網址

http://www.blabla.com/category/sub/.html

我生成SEO友好的聯繫,通常產品已經像blabla.com/category/sub/product.html

頁面犯規網址給任何錯誤。它只是顯示空白的內容。我的意思是我可以看到像CATEGORY NAME標題這樣的靜態文本,但是旁邊沒有動態類別名稱,因爲url是錯誤的,無法從db獲取記錄。頁面不顯示動態內容,但顯示靜態內容

欣賞幫助!!感謝

回答

1

如果查詢不會導致任何行,你可以設置爲404頭 - 未發現重定向到一個404頁

例如:

<?php  

    //$rows is the num_rows of the query 
    if ($rows > 0) {  
     //your code here  
    } else {  
     header("HTTP/1.1 404 Not Found"); 
     header("Location: 404.html"); 
     exit(); 
    } 

?> 
+0

嗨,是的,它解決了我的問題:)但我認爲應該有更有效的方式,使其通過htaccess或... ...而不是PHP的控制 – 2009-11-24 14:40:23

+0

我使它與返回的id值控制:)與你的建議相同。再次感謝 – 2009-11-24 14:57:37

+0

不要發送404,並在同一時間做一個重定向!重定向將導致302而不是。 – Gumbo 2009-11-24 16:55:40

0

您應該使用的.htaccess捕獲錯誤:

ErrorDocument 400 /errors/400.html 
ErrorDocument 401 /errors/401.html 
ErrorDocument 403 /errors/403.html 
ErrorDocument 404 /errors/404.html 
ErrorDocument 500 /errors/500.html 

阿帕奇現在知道,它需要根據發生了什麼錯誤加載這些網頁之一。您可以改爲使用php腳本(例如404.php)來獲得動態解決方案。

這意味着http://www.blabla.com/category/sub/.html將顯示一條錯誤消息,並且服務器將生成一個錯誤頭(在這種情況下爲404),因此搜索引擎將不會抓取它。

您可以通過在您的http根目錄中創建一個名爲.htaccess的文件並在其中添加代碼來使用此代碼。 .htaccess不是文件擴展名,而是文件本身。

更多信息可以found here

+0

頁面不會給出任何錯誤。它只是顯示空白的內容。我的意思是我可以看到CATEGORY NAME標題,但沒有動態類別名稱,因爲url是wrng。頁面不顯示動態內容,但顯示靜態內容 – 2009-11-24 14:28:32

+0

沒錯,你沒有指定當我鍵入我的文章,我認爲你需要看看盧卡斯雷南的答案。 – 2009-11-24 14:32:52

+0

是的,對不起我的錯誤:S – 2009-11-24 14:38:22

0

不要重定向!重定向(30x)與發送404不一樣!只需發送適當的狀態代碼以及您的錯誤文檔:

if (!$documentFound) { 
    header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found', true, 404); 
    readfile('error404.html'); 
    exit; 
}