Apache从Redhat OpenShift上的/ static / root /重写root静态文件

时间:2013-02-05 09:51:13

标签: apache mod-rewrite openshift

我正在使用部署在Redhat Openshift上的this project和mod_wsgi + apache

重写文件位于/wsgi/.htaccess,内容为:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}/wsgi/static/root/%{REQUEST_FILENAME} -f
RewriteRule ^(.*)$ static/root/$1 [L]
</IfModule>

如你所见,我想改写

http://mysite/favicon.ico

到服务器上的这个位置

wsgi/static/root/favicon.ico

但是我的配置根本不起作用。我试过的每一条静态路径都不会受到这条规则的影响。因为我不能strace在Redhat Openshift上使用apache,所以我不知道出了什么问题。

有任何帮助吗? TIA。

2 个答案:

答案 0 :(得分:0)

那么指定rewriteBASE呢?

答案 1 :(得分:0)

好的,我设法strace -fp $APACHE_PID了解了如何:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{DOCUMENT_ROOT}/static/root%{REQUEST_URI} -f
RewriteRule . static/root%{REQUEST_URI} [L]
</IfModule>

有几个试验和错误。

  1. REQUEST_FILENAME原来是本地文件路径。所以请使用REQUEST_URI代替`

  2. OpenShift将DocumentRoot定义为项目wsgi dir

  3. Rewriterule不要使用$1进行RegEx匹配,因为它会映射到static/root/application/file_path。我猜mod_wsgi做了一些有趣的别名。