发新帖

[Linux] [Apache] [Nginx] 伪静态规则 判断访问文件或目录不存在rewrite

零下一度 2021-11-15 988

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;

   }

}

 

最新回复 (0)
返回
零下一度
主题数
928
帖子数
0
注册排名
1