Apache 判断访问文件或目录不存在rewrite
伪静态%{REQUEST_FILENAME} !-f 和!-d用法
%{REQUEST_FILENAME} !-f 和!-d只对下一条RewriteRule起作用。再往下的RewriteRule不管用。
-f 表示为文件
-d 表示为目录
! 表示非,取反的意思
RewriteCond %{REQUEST_FILENAME} !-f (如果不是文件,才会执行下一条RewriteRule)
RewriteCond %{REQUEST_FILENAME} !-d (如果不是目录,才会执行下一条RewriteRule)
切记,只生效下一条,再下一条就不管用了,再下一条则会以全局形式匹配,没有条件判断。
Nginx 判断访问文件或目录不存在rewrite
文件及目录匹配,其中:
* -f和!-f用来判断是否存在文件
* -d和!-d用来判断是否存在目录
* -e和!-e用来判断是否存在文件或目录
* -x和!-x用来判断文件是否可执行
样例 : 判断访问的图片是否存在,不存在跳转到另外的域名
location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|thumb) {
root /data/wwwroot/bbs.xxx.com;
expires 10d;
if (!-e $request_filename) {
rewrite ^/data/p_w_upload/forum/(.*)$ http://img.xxx.com/forum/$1 permanent;
}
}