2011-09-30 71 views
3

我有一個自定義的CMS。除了一件事外,它工作得很好。我想知道如何最好地實現404功能。該網站應該只有以下網址類型如何在.htaccess中寫入404規則

index.php?upn=something 

gallery.php?groupId=2 

被附加到URL後的index.php或gallery.php應該拋出404的任何目錄。另外,如果在指定upn時沒有在數據庫中找到內容,我想拋出404。我意識到我可以在PHP中引用標題。但我說過我會試着更全面地瞭解這個問題。所以如果你有任何信息或指標,我會很感激他們。

+1

「另外我想拋出一個404,如果在數據庫中找不到內容」由於您想檢查數據庫內容,您必須通過PHP發送狀態代碼,因此無法通過apache conf – KingCrunch

+2

! – undone

+0

謝謝你們,我明白關於php。我確實是在apache之後的第一個位置,並且只是在我需要在php中尋找的任何東西的指針。謝謝。 – jiraiya

回答

1

我想從我的PHP代碼編程做到這一點。你可以寫一些簡單的路由組件,試圖找到你想要的。今天,你只是採取行動(index.php?upn=gallery.php?groupId=),但將來有一天你可能會添加一個新的,你應該改變你的.htaccess,這是更困難的。如果您在應用程序層中完成所有操作,則可以將其更改得更簡單。

將此代碼粘貼到項目根目錄下的.htaccess文件中,並將每個請求路由到router.php。一旦你有了這個請求,你就可以決定要採取的行動。

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ router.php?url=$1 [QSA,L] 
</IfModule> 

希望它有幫助。

+0

非常感謝我真的很喜歡這個路由器的想法,因爲我一直都在爲構建數據庫查詢做類似的操作。很好的答案,感謝一百萬。 – jiraiya

+0

不客氣。看看CakePHP路由器。它的工作原理就像這樣,可以用來查看代碼。也許你可以使用別的東西。此外,可能有一些庫用於在那裏路由 – santiagobasulto

1

你不得不在PHP代碼返回404,但你可以在htaccess的設置404處理器,像這樣:

ErrorDocument 404 /errors/notfound.html