Apache访问/ media /而不是DocumentRoot / media

时间:2012-02-14 10:47:53

标签: apache mod-rewrite

我的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]

1 个答案:

答案 0 :(得分:0)

通过将rewriterule更改为:

来解决

RewriteRule ^(/ media /.+)/ home / x / public / $ 1 [L]

虽然很丑,但确实有效。