我正在使用部署在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。
答案 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>
有几个试验和错误。
REQUEST_FILENAME
原来是本地文件路径。所以请使用REQUEST_URI
代替`
OpenShift将DocumentRoot
定义为项目wsgi
dir
和Rewriterule
不要使用$1
进行RegEx匹配,因为它会映射到static/root/application/file_path
。我猜mod_wsgi做了一些有趣的别名。