【发布时间】:2019-12-17 08:08:22
【问题描述】:
我正在制作一个小型 Web 应用程序,它根据传递的 URL 参数向我发送提醒。目前,我有一个个人域 - 为了便于讨论,我们将其命名为 http://somedomain.com。
我在域提供商网站的 DNS 设置中设置了一个子域,以便它重定向到一个 Google Apps 脚本发布的 Web 应用程序,该应用程序旨在向我发送提醒。我的工作流程如下:
- 我转到
http://s.somedomain.com的子域并使用?传递参数(例如http://s.somedomain.com?q=medicine) -
s.somedomain.com设置为重定向到我位于https://script.google.com/macros/s/.../exec的 Apps Script Web 应用程序:
function doGet(e){
GmailApp.sendEmail('MYEMAIL', 'Reminder: placeholder text', e.parameter.q);
return HtmlService.createHtmlOutput("✔️ Sent");
}
工作流程非常好,因为重定向所有工作都有效,我最终进入一个只显示✔️ Sent 的页面。
然而,这里的问题是,当我转到s.somedomain.com?q=medicine 时,我会自动重定向到s.somedomain.com/?q=medicine(在顶级域之后有一个/),这完全破坏了脚本,因为参数被传递到我的根目录在重定向之前,导致重定向指向:
https://script.google.com/macros/s/.../exec/?q=medicine
而不是:
https://script.google.com/macros/s/.../exec?q=medicine
我不确定这是否是我的 DNS 转发的问题,或者我是否需要将我的域指向一个页面并以这种方式处理参数,或者这是否可以通过尝试在 Apps 脚本中完成获取尾部/之后的参数。
我的域名提供商是 ionos(以前的 1and1),我的目标设置如下图所示,Domains & SSL > Subdomains > s.somedomain.com > Adjust Destination > Forward Domain.
【问题讨论】:
-
设置重定向到
https://script.google.com/macros/s/...。致电somedomain.com/exec?q=medicine? -
@TheMaster 很棒的建议,但不幸的是它不起作用 - 调用
somedomain.com/exec?q=medicine不会调用脚本,而是重定向到script.google.com/home。我按照您的建议尝试了域端重定向,在脚本 ID 之后没有尾随/,然后再次使用。我考虑过使用一些服务器端重定向来处理它,但由于我的网络服务器情况,我希望在 Apps Script 或 DNS 中执行此操作。我想知道 serverfault 是否是个问的好地方。 -
我还编辑了我的问题,说实话我是在子域而不是域本身上测试它。在
s.subdomain.com上运行。 -
somedomain.com/exec?q=medicine doesn't call the script and instead just redirects to script.google.com/home你能得到网络日志吗(应该在开发控制台中)?比如发出了什么请求以及重定向来自哪里? -
@TheMaster
s.somedomain.com?q=medicine得到302 Found重定向到https://script.google.com/macros/s/...脚本页面,没有/exec?q=medicine,然后是script.google.com/a/macros/myDomain/s/...,最后是https://script.google.com/home。都是302 Found。
标签: google-apps-script web-applications parameters http-redirect url-parameters