我想仅在图像文件不存在时重定向到/lost/index.php。 当我尝试它 - 似乎它不适用于浏览器刷新 如果我使用服务器上存在的文件调用它
/images/image1.jpg
低于我的规则
RewriteEngine On
RewriteLog /var/log/apache2/rewrite.log
RewriteLogLevel 3
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/images/(.*)$ /lost/index.php?image=$1 [L,R]
有什么想法吗?
答案 0 :(得分:0)
所以我解决了。
如果在元素内定义重写规则,它们应该看起来像
<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>
如果你定义它们&#34;全球&#34;在(每服务器上下文)之外,它们应该看起来像
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的最终值。
同样重要的是 - 两种情况下的模式必须不同。在第二种情况下,它必须以&#39; /&#39;开头。而在第一个不是。这是因为REQUEST_FILENAME包含&#39; /&#39;在第二种情况的开始,但它不适用于第一种情况