使用 Apache 作为代理时,无法使用 playframework 为静态资源生成正确的 URL

发布于 2024-11-05 07:51:32 字数 1141 浏览 1 评论 0 原文

我使用 Apache 服务器作为我的 playframework 应用程序的代理。代理配置文件是这样的:

> <VirtualHost *:80>
>     ProxyPreserveHost Off
>     ServerAdmin [email protected]
>     DocumentRoot "/home/admin/www"
>     ServerName viform.net
>     ErrorLog "logs/viform.net-error.log"
>     ProxyPass /zh-cn/ http://localhost:9000/
>     ProxyPassReverse /zh-cn/ http://localhost:9000/  
> </VirtualHost>

当我访问 http://viform.net/zh-cn/signin< /a>,它显示了正确的页面。但页面中静态资源的url不正确。生成的html页面代码是这样的:

     ...
    <script type="text/javascript" src="/public/javascripts/base.js">
    </script>
    <script type="text/javascript" src="/public/javascripts/secure/submitbutton.js">
    </script>
    <script type="text/javascript" src="/public/javascripts/secure/signinpanel.js">
    </script>
    ...

浏览器找不到这些资源,因为它们的src路径应该以“/zh-cn”开头。 有谁可以帮我解决这个问题吗?谢谢。

I use an Apache server as a proxy for my playframework application. The proxy configure file is like this:

> <VirtualHost *:80>
>     ProxyPreserveHost Off
>     ServerAdmin [email protected]
>     DocumentRoot "/home/admin/www"
>     ServerName viform.net
>     ErrorLog "logs/viform.net-error.log"
>     ProxyPass /zh-cn/ http://localhost:9000/
>     ProxyPassReverse /zh-cn/ http://localhost:9000/  
> </VirtualHost>

When I access http://viform.net/zh-cn/signin, It shows me the correct page. But the urls of static resources in the page are not correct. The generated html page code is like this:

     ...
    <script type="text/javascript" src="/public/javascripts/base.js">
    </script>
    <script type="text/javascript" src="/public/javascripts/secure/submitbutton.js">
    </script>
    <script type="text/javascript" src="/public/javascripts/secure/signinpanel.js">
    </script>
    ...

The browser can not find these resources since their src paths should start with "/zh-cn".
Is there anyone can help me figure this out? Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

苦行僧 2024-11-12 07:51:32

Play Group 中有一些关于此主题的帖子,并且还有一个关于 SO 如何在 Play Framework 的配置文件中使用“war.context”? 类似。

如果您在 GoogleGroups,您将看到预期的配置是在路由文件中指定上下文。例如..

%{ ctx = play.configuration.getProperty('ctx', '') }%

GET     ${ctx}/            Application.index
GET     ${ctx}/hello     Application.hello

您可以将以下内容放入您的应用程序conf文件中。

ctx=zh-cn

There are a few posts on this topic in the Play Group, and there is another question on SO how to use "war.context" in Configuration file of Play Framework ? that is similar.

If you look at this post on GoogleGroups, you will see that the expected configuration is to specify the context in your routes file. For example..

%{ ctx = play.configuration.getProperty('ctx', '') }%

GET     ${ctx}/            Application.index
GET     ${ctx}/hello     Application.hello

Where you would put the following in your app conf file.

ctx=zh-cn
吲‖鸣 2024-11-12 07:51:32

从 play-1.2.2 开始,conf/application.conf 中有一个新的配置属性,名为

http.path

在您的示例中,尝试像这样设置它:

http.path=/ch-cn

它应该可以工作。

As of play-1.2.2 there is a new configuration property in conf/application.conf called

http.path

In your example, try setting it like this:

http.path=/ch-cn

it should work.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文