我的设置:
–
$ ls /etc/apache2/mods-enabled/*.load alias.load auth_basic.load authn_file.load authz_default.load authz_groupfile.load authz_host.load authz_user.load autoindex.load cgi.load deflate.load dir.load env.load expires.load mime.load negotiation.load php5.load reqtimeout.load rewrite.load setenvif.load status.load userdir.load
使用redirect到/home/*/www mod_userdir
在/home/*/www/styles有一个.htaccess文件,其中包含以下指令:
RewriteEngine On RewriteRule (styles-files/.+)\.(\d{10})\.(\w{2,4})$ $1.$3 [L]
现在这里是令人困惑的部分(个人信息蒙上了阴影)
加载http://localhost/~***/styles/styles-files/css/jquery.qtip.css可以正常工作(文件显示在浏览器中)
加载http://localhost/~***/styles/styles-files/css/jquery.qtip.1376640525.css给我404错误,但消息说“/ home / *** / www / styles / styles-文件/ css / jquery.qtip.css“没有find,所以它看起来是redirect。 这是该文件的正确path。
重写日志显示:
(3) [perdir /home/***/www/styles/] strip per-dir prefix: /home/***/www/styles/styles-files/css/jquery.qtip.1376640525.css -> styles-files/css/jquery.qtip.1376640525.css (3) [perdir /home/***/www/styles/] applying pattern '(styles-files/.+)\\.(\\d{10})\\.(\\w{2,4})$' to uri 'styles-files/css/jquery.qtip.1376640525.css' (2) [perdir /home/***/www/styles/] rewrite 'styles-files/css/jquery.qtip.1376640525.css' -> 'styles-files/css/jquery.qtip.css' (3) [perdir /home/***/www/styles/] add per-dir prefix: styles-files/css/jquery.qtip.css -> /home/***/www/styles/styles-files/css/jquery.qtip.css (1) [perdir /home/***/www/styles/] internal redirect with /home/***/www/styles/styles-files/css/jquery.qtip.css [INTERNAL REDIRECT]
但之后,Apache就会抛出一个错误
[error] [client 127.0.0.1] File does not exist: /var/www/home
如果我把所有的东西都移到/var/www ,重写就能正常工作。 似乎mod_rewrite和mod_userdir之间有某种冲突,但是我在网上找不到任何东西。
有关可能发生的事情的任何想法,以及如何解决这个问题?
经过一番阅读后,我意识到,因为RewriteRule在.htaccess文件中,由于隐含的PT标志,所以产生的replace被视为URLpath而不是文件系统path。
添加一个RewriteBase指令使这个工作,但不是一个令人满意的解决scheme,因为我想这是可移植的。
文件进一步暗示
规避PT标志的唯一方法是重写为 – 。
但是我一直无法通过追加来实现
RewriteRule .* - [L]
并从前面的规则中删除[L]。
我能够使用RewriteCond和%{REQUEST_URI}来解决这个问题,它允许我重buildURL而不是将系统文件path作为URL传回。
RewriteEngine On RewriteCond %{REQUEST_URI} ^(/.*?)styles-files/ RewriteRule (styles-files/.+)\.(\d{10})\.(\w{2,4})$ %1$1.$3 [PT]