我们有一个当前在Wordpress上运行的网站。我们正在开发一个Django站点来取代它。加班,目标是用Django慢慢替换部分Wordpress网站。我们通常会为Django设置这样的东西:
ProxyPass /newcontent/static !
ProxyPass /newcontent uwsgi://127.0.0.1:3031/ retry=0
ProxyPassReverse /newcontent uwsgi://127.0.0.1:3031/newcontent/ retry=0
这将在ourwebsite.com/newcontent
安装Django / uWSGI应用程序。但是,这意味着所有Django URL都将从该根开始,因此类似于ourwebsite.com/newcontent/aboutus
。有没有办法配置Apache所有请求都将转到Wordpress,除非在conf中明确指出?我可以想象,制作大量uWSGI条目是一种方法,但是Django会看到各种基本路径,这在内部工作得不好。
最后,我最好能做到这样的事情:
# Normal Wordpress config, DirectoryIndex, etc
# Django Specific Stuff
/about-us # Goes to Django
/admin/* # Django admin
/our-products/* # This and all subpaths to Django
/static/* # Same, all static content
此外,我们始终在Django站点上提供httpS服务,因此最好还将任何Django服务的URL重定向到Apache中的https。
随着时间的推移,我们将慢慢取代wordpress网址,直到最后,Django才是最重要的服务。此时,我们可以清理配置以将所有URL发送到Django。
答案 0 :(得分:0)
一种解决方案是使用ProxyPassMatch
。这是一个未经测试的例子:
ProxyPassMatch "^/newcontent/((one|two|three|four)(/|$).*) uwsgi://127.0.0.1:3031/$1 retry=0
在此示例中,one
,two
,three
和four
是Django应提供的网址。
如果ProxyPassMatch
无法做到,可以使用mod_rewrite完成。
正则表达式很难理解。即使你没事,你身边的其他人也不会。因此,最好避免它们。因此,如果可能,另一种解决方案是列出Wordpress URL而不是Django URL:
ProxyPass /newcontent/five !
ProxyPass /newcontent/six !
ProxyPass /newcontent uwsgi://...
Wordpress将为five
和six
提供服务。
更新:我睡过了我的回答,我想知道;你说
我可以想象,制作大量uWSGI条目是一种方法,但是Django会看到各种基本路径,这些路径在内部工作得不好。
那么下面会出现什么问题?
ProxyPass /newcontent/one uwsgi://127.0.0.1:3031/one
ProxyPass /newcontent/two uwsgi://127.0.0.1:3031/two