Apache-2.2
使用 mod_rewrite 提供空的 404 頁面
我有一個
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(禁止)——(惡意)客戶看到什麼有什麼關係?