所以我解决了。
如果您在元素内定义重写规则,它们应该看起来像
<Directory /var/www/local.example.com>
...
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^images/(.*)$ /lost/index.html?image=$1 [R]
</Directory>
如果您在(每服务器上下文)之外“全局”定义它们,它们应该看起来像
RewriteEngine On
RewriteCond %{LA-U:REQUEST_FILENAME} !-l
RewriteCond %{LA-U:REQUEST_FILENAME} !-d
RewriteCond %{LA-U:REQUEST_FILENAME} !-f
RewriteRule ^/images/(.*)$ /lost/index.html?image=$1 [R]
这是因为如果在每个服务器上下文中使用(即,在请求映射到文件系统之前) SCRIPT_FILENAME 和 REQUEST_FILENAME 不能包含完整的本地文件系统路径,因为在这个处理阶段路径是未知的。在这种情况下,这两个变量最初都将包含 REQUEST_URI 的值。为了在每个服务器上下文中获取请求的完整本地文件系统路径,请使用基于 URL 的前瞻 %{LA-U:REQUEST_FILENAME} 来确定 REQUEST_FILENAME 的最终值。
同样重要的是——两种情况下的模式必须不同。在第二种情况下,它必须以'/'开头,而在第一种情况下则不是。这是因为 REQUEST_FILENAME 在第二种情况的开头包含“/”,但在第一种情况下却没有