我有一个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脚本。
问题是,对不存在的文件的请求不符合上述规则,并被redirect到index.php引导整个Drupal应用程序,并不必要地加载网站。
为了绕过Drupal丢失的文件,我创build了以下规则:
RewriteCond %{REQUEST_URI} (.jpg|.jpeg|.css|.js|.png)$ RewriteCond %{REQUEST_FILENAME} !-f RewriteRule .* - [L,R=404]
这工作,但问题是, 404redirect依赖于ErrorDocument 404 /index.php结束了引导Drupal 。
我需要保留ErrorDocument 404 /index.php因为Drupal被用来为dynamic内容提供有用的404页面。 我试图定义几个ErrorDocument 404 (1在我的规则之前,1在Drupal规则之前),但只有最后一个适用。
问:如何在不更改ErrorDocument 404指令的情况下为空的404页面提供不存在的文件请求?
我认为这是你想要的: 用Mod_Rewrite模拟ErrorDocuments
使用不同的HTTP状态代码?
说,403(禁止) – (恶意)客户端看到了什么?