Apache httpd重写模式不起作用


2

我正在使用这个gitlab配置https://github.com/gitlabhq/gitlab-recipes/blob/master/web-server/apache/gitlab.conf

这是重写日志

125.121.60.59 - - [14/Aug/2014:12:50:23 +0800]
 [xxx.xxx.com/sid#7f8e26a023c8][rid#7f8e26ca5be8/initial] 
(4) RewriteCond: input='/home/git/gitlab/public/uploads/foo/bar/7b02f4c192/classes.png' pattern='!-f' => matched

我很确定/home/git/gitlab/public/uploads/foo/bar/7b02f4c192/classes.png存在。

为什么这种模式匹配?

Answers:


1

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f

-f需要用户可读的文件运行httpd(apache在centos上)。

你可以通过验证 sudo -u apache stat /path/to/file


如果你看一下重写文件位置'/home/git/gitlab/public/uploads/foo/bar/7b02f4c192/classes.png' pattern='!-f' => matched就是我们所期望的
jilen 2014年

相信我这个。那个检查就像我写的那样完成。我在几台服务器上有类似的规则。从apache文档:REQUEST_FILENAME The full local filesystem path to the file or script matching the request
NuTTyX 2014年

我试过但仍然没有工作......
jilen

我有一个额外的%。请复制这两条规则,然后重试。如果仍然不起作用,请检查文件和文件夹权限
NuTTyX 2014年

sudo -u apache ls / home / git / gitlab / public / uploads ls:无法访问/ home / git / gitlab / public / uploads:权限被拒绝是否意味着apache没有权限?我通过'chmod a + rx'更改了权限但没有工作
jilen
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.