2013-04-05 68 views
0

首先,我認爲mod_rewrite - how to redirect a mistyped 'pretty' url但是OP是想要他的輸入錯誤的網址重定向到正確的,我只是想礦error404。如何防止mod_rewrite對接受輸入錯誤的網址

快速提問。我正在尋找一種解決方案來改進我的一些mod re_write代碼。

當前是否有人在我的網站上輸入了一個網址,即產品網頁I.e. 「/產品/ [類別]/[產品名稱]」 .htaccess文件具有下面的代碼

RewriteRule ^products\/([^/]+)\/([^/]+)$  ?page=product&product=$2 [L] 

但作爲預期,如果有人錯誤地輸入只有[產品名稱]其中一期工程完全模板頁面仍然加載在URL中使用該產品名稱作爲變量而不登陸404錯誤。

我處理所有的錯誤頁面,就像這樣:

#ErrorDocument 404   /index.php?page=error404 

希望有人能照如何讓不存在的網頁適應前者重寫規則光即如果我們有一個名爲kettle的產品,並且在URL的末尾輸入了一個密碼,它將會404,而不是仍然使用ketle加載模板頁面作爲GET var。

在此先感謝。

回答

1

你甚至可以寫一個PHP腳本到動態頁面的<頭>元素,這種格式爲例:

$con = mysqli_connect("$hostname", "$username", "$password", "$database"); 

if (mysqli_connect_errno()) { 
    echo mysqli_connect_error(); 
} 

$result = mysqli_query($con, "SELECT content FROM pages WHERE id = $value LIMIT 1"); 

if (0 = mysqli_fetch_array($result)) { 
    echo '<meta http-equiv="location" content="URL=http://www.yourdomain.com/index.php?page=error404">'; 
} 

注:仔細檢查上面的代碼,如果它是正確的,對於這只是一個例子,並沒有很好地檢查語法,並且如果使用mysqli_fetch_array()來計算SQL查詢的上的行(s)

2

我假設你index.php腳本處理「頁」和「產品」參數。這將是唯一一個知道「產品」參數是否實際指向有效產品名稱的人。如果不是,則需要使用header函數生成404,然後顯示page=error404的內容。

的htaccess文件和mod_rewrite的是不會知道的頁面名稱是否正確或輸入錯誤的,只有確實查找會知道腳本。