我的Apache配置包含以下语句:
DocumentRoot /home/x/public/
<Location />
Order Allow,Deny
Allow from all
Options -ExecCGI -Indexes
</Location>
/ home / x / public /
下有一个目录/媒体 RewriteRule ^(/media/.+) $1 [L]
媒体文件应该保持不变并由Apache提供服务 - 其他请求被重定向到Ruby on Rails代理服务器。
每当我尝试通过浏览器访问/ media下的文件时,Apache会尝试提供/ media / file(在文件系统根目录上)而不是/ home / x / public / media / file
如果我将/ media重命名为/ medias,则正确提供文件/ home / x / public / media / file。
如何防止此行为?
编辑:添加mod_rewrite日志:
如果是“mv / media / / medias”:
applying pattern '^(/media/.+)' to uri '/media/css/TableTools.css'
rewrite '/media/css/TableTools.css' -> '/media/css/TableTools.css'
local path result: /media/css/TableTools.css
prefixed with document_root to /home/x/public/media/css/TableTools.css
go-ahead with /home/x/public/media/css/TableTools.css [OK]
如果是“mv / medias / media”:
applying pattern '^(/media/.+)' to uri '/media/css/TableTools.css'
rewrite '/media/css/TableTools.css' -> '/media/css/TableTools.css'
local path result: /media/css/TableTools.css
go-ahead with /media/css/TableTools.css [OK]
答案 0 :(得分:0)
通过将rewriterule更改为:
来解决RewriteRule ^(/ media /.+)/ home / x / public / $ 1 [L]
虽然很丑,但确实有效。