0

我正在使用这个项目部署在 Redhat Openshift 和 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。

4

2 回答 2

0

那么指定 rewriteBASE 呢?

于 2013-02-05T10:18:09.350 回答
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目录

  3. 并且Rewriterule不应该$1用于正则表达式匹配,因为它将被映射到static/root/application/file_path. 我猜 mod_wsgi 做了一些有趣的别名。

于 2013-02-06T07:54:31.863 回答