Apache-2.2

使用 mod_rewrite 提供空的 404 頁面

  • November 10, 2016

我有一個Drupal包含以下預設mod_rewrite規則的網站

 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_URI} !=/favicon.ico
 RewriteCond %{REQUEST_URI} !=/server-status
 RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

這意味著將直接提供與現有文件或目錄匹配的請求,而不是觸發index.php腳本。

問題是對不存在文件的請求與上述規則不匹配,並被重定向到index.php引導整個Drupal應用程序的引導程序並不必要地載入網站。

為了繞過Drupal失去的文件,我創建了以下規則:

 RewriteCond %{REQUEST_URI} (.jpg|.jpeg|.css|.js|.png)$
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule .* - [L,R=404]

這可行,但問題是404重定向依賴於ErrorDocument 404 /index.php最終引導Drupal

我需要保留ErrorDocument 404 /index.php,因為用於為動態內容Drupal提供有用的頁面。404我試圖定義幾個ErrorDocument 404(1 在我的規則之前和 1 在 Drupal 規則之前)但只有最後一個適用。

問:如何在不更改指令404的情況下為對不存在文件的請求提供空白頁面?ErrorDocument 404

我認為這就是你想要的:Emulating ErrorDocuments with Mod_Rewrite

改用不同的 HTTP 狀態碼?

比如說,403(禁止)——(惡意)客戶看到什麼有什麼關係?

引用自:https://serverfault.com/questions/371460