OpenShift、python 2.7和带有htaccess的静态文件
我正在尝试配置apache,以便为URL提供静态文件,如OpenShift、python 2.7和带有htaccess的静态文件,python,apache,.htaccess,openshift,Python,Apache,.htaccess,Openshift,我正在尝试配置apache,以便为URL提供静态文件,如site.com/img/bla.jpg。 蟒蛇筒+烧瓶 我知道wsg/static目录有一个预配置的别名,所以我们可以使用site.com/static/bla.jpg。但我需要额外的静态目录 项目结构: /wsgi .htaccess /img -> $OPENSHIFT_DATA_DIR/some/path (soft link) /static application 在后端,我绑定了mysite.com/i
site.com/img/bla.jpg
。
蟒蛇筒+烧瓶
我知道wsg/static
目录有一个预配置的别名,所以我们可以使用site.com/static/bla.jpg
。但我需要额外的静态目录
项目结构:
/wsgi
.htaccess
/img -> $OPENSHIFT_DATA_DIR/some/path (soft link)
/static
application
在后端,我绑定了mysite.com/img/
以测试apache或后端是否处理文件-它返回“ok[filename]”字符串
我在htaccess中尝试了以下配置:
1:site.com/img/1.jpg
->“ok 1.jpg”
据我所知,正则表达式与请求URL不匹配,apache只是将内容传递到后端
2:site.com/img/1.jpg
->“ok 1.jpg”
3:site.com/img/1.jpg
->打开谷歌的i1_3d265689.png
RewriteEngine On
RewriteBase /
RewriteRule /img/1.jpg https://ssl.gstatic.com/gb/images/i1_3d265689.png [L]
注:无需重写
那么如何让它工作呢
我再次希望apache以wsg/img/
的形式提供mysite.com/img/
openshift有什么问题吗?或者我错过了什么?看起来我已经明白了。该问题分两步解决:
wsgi/static
中。您不能将apache配置为使用另一个目录,因为您只能使用.htaccess
文件进行操作,该文件不允许配置此类内容。因此,我无法使apache从wsgi/img
或$OPENSHIFT\u DATA\u DIR/img
提供资产。
我必须在wsgi/static
中创建指向这些目录的符号链接,如:
/wsgi
/static
/img -> (symlink) $OPENSHIFT_DATA_DIR/img
现在我们可以通过site.com/static/img/1.jpg
访问图像site.com/static/img/1.jpg
映射到wsgi/.htaccess
中的site.com/img/1.jpg
。比如:
RewriteRule ^img/(.+)$ /static/img/$1 [L]
or
RewriteRule ^/img/(.+)$ /static/img/$1 [L]
而且它将不起作用,因为regexp强制从URL路径(^
)的开头进行搜索。
问题是OpenShift的apacheurl路径是什么(至少对于RewriteRule
)<代码>应用程序/img/1.jpg在我的情况下。因此,^img/(.+)$
和^/img/(.+)$
都不会与URL路径匹配。我不是apache专家,但使用模板配置可能有助于解决URL路径问题。
因此,解决方案是删除^
:
RewriteRule /img/(.+)$ /static/img/$1 [L]
现在我们可以使用site.com/img/1.img
,但site.com/randomstuff/img/1.img
也可以使用。因此,我使用RewriteCond
来过滤这些URLRewriteEngine On
RewriteCond %{REQUEST_URI} ^/img/
RewriteRule /img/(.+)$ /static/img/$1 [L]
谢谢,你让我开心。我用这个把头撞在墙上。
RewriteRule /img/(.+)$ /static/img/$1 [L]
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/img/
RewriteRule /img/(.+)$ /static/img/$1 [L]