【发布时间】:2019-12-03 21:41:26
【问题描述】:
根据mod rewrite doc regarding -f
将 TestString 视为路径名并测试它是否 存在,并且是一个常规文件。
所以,我有以下重写规则
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
RewriteCond /efs/my-project/angular-json/$1/$2.json -f
RewriteRule ^/(test-folder)/(california)$ http://noderender:8080/$1/$2?mode=client [P,QSA,E=CACHE_CHECK:]
以及文件的统计数据
$ stat /efs/my-project/angular-json/test-folder/california.json
File: /efs/my-project/angular-json/test-folder/california.json
Size: 1689 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 5373962 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 1000/ choz) Gid: ( 33/ www-data)
Access: 2019-07-25 00:00:20.811760100 +0800
Modify: 2019-07-23 21:43:48.177173780 +0800
Change: 2019-07-23 21:43:48.177173780 +0800
Birth: -
还有,这是它的日志,
applying pattern '^/(test-folder)/(california)$' to uri '/test-folder/california'
RewriteCond: input='/var/www/my-project/test-folder/california' pattern='!-f' => matched
RewriteCond: input='/var/www/my-project/test-folder/california' pattern='!-d' => matched
RewriteCond: input='/efs/my-project/angular-json/test-folder/california.json' pattern='-f' => not-matched
问题是,为什么 -f 在那里不匹配?我是否缺少任何 httpd 配置并导致此问题?
【问题讨论】:
标签: apache mod-rewrite url-rewriting httpd.conf