nginx上跑webpy网站,form提交数据时遇到了action的url跳转问题

2012-08-04 22:37:01 +08:00
 paloalto
站点没有放在根目录,是一个二级目录。

form页面的地址是类似这样的: http://xxx.com/account/register

form中的action是这样的 action="/account/register"

但是这样提交数据之后,就跳到了 http://xxx.com/account/register//account/register 这样的url。

我想到的一个比较笨的解决办法是把action都写成绝对路径,action="http://xxx.com/account/register" 这样,但是这样的话工作量就比较大了,而且也不灵活。

不知道大家对这个问题有什么好的解决办法?是不是需要在nginx中改一下配置呢?
4428 次点击
所在节点    Python
10 条回复
paloalto
2012-08-04 22:42:52 +08:00
这里似乎是个解决办法 http://www.iteye.com/problems/80467
paloalto
2012-08-05 01:43:55 +08:00
唉,他的是针对php的。。
paloalto
2012-08-05 02:01:59 +08:00
把目录转移到了/home/www/下,还是不行,奇怪了。。
toothpaste
2012-08-05 10:05:23 +08:00
这个跟nginx有关还是跟webpy有关?
我用Apache,我在webpy里写表单,提交给本页的话,会用"./" , 例如"./?register"
kingwkb
2012-08-05 10:29:06 +08:00
这种情况一般都是有可配置的当前域和目录,这样为什么不灵活?换域名改下配置就行了,如果是多域名的话这样也不影响,或许当前域名动态获取,目录配置,改动大吗,不大吧,就是加个配置,action改下就行了
memorybox
2012-08-05 10:35:41 +08:00
是用template输出的吗?
web.py的setting文件里好像要设置一下,我一般是这样:

templates_root = 'XXX' #模板文件目录
render = web.template.render(templates_root, cache=False)
config = web.storage(
static = '/static', #这个是静态文件目录
site_name = 'XXXXX',
)
web.template.Template.globals['config'] = config
web.template.Template.globals['render'] = render

写路径的时候,基于模板文件的路径来写。如果用到js或css等文件,放到static目录下。
manhere
2012-08-05 18:09:17 +08:00
action留空就是啊
ipconfiger
2012-08-05 19:26:41 +08:00
提交到当前地址留空就行了
paloalto
2012-08-06 14:17:27 +08:00
@manhere @ipconfiger 那如果是像这样需要传参数的呢?

<form method="post" class="default_form reset_password_form" action="/account/reset/$token">
paloalto
2012-08-06 14:53:36 +08:00
@toothpaste

试了下把 http://xxx.com/account/login页面里的form改成action="./",发现提交后页面跳到了 http://xxx.com/account/

还试了改成action="./login",结果和action="/account/login"一样,跳到了 http://xxx.com/account/login//account/login

还有一个问题是:访问 http://xxx.com/account/login 时能正常打开页面,但如果在地址后面加一个“/”, http://xxx.com/account/login/ 页面就会跳转到 http://xxx.com/account/login//account/login

@memorybox 我觉得不是webpy的问题,也不是static路径的问题。因为我在本地开发时没有这个问题,本地我是用webpy自带的那个服务器,线上是用的nginx。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/44289

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX