【问题标题】:Php HTTP redirect not working on Azure App ServicePHP HTTP 重定向在 Azure 应用服务上不起作用
【发布时间】:2020-12-21 13:33:02
【问题描述】:

当我的用户访问我的一个端点时,我正试图将他们重定向到某个网站。 https://url-shortner-in.azurewebsites.net/openfb 将指向 google.com

我的服务器使用 REST API 托管在带有 Slim Framework v4 的 Azure App Service 上。

这是我重定向用户的电话。

return $response
            ->withHeader('Location', 'http://www.google.com')
            ->withStatus(302);

它在我的本地 WAMP 服务器上运行良好。我将被重定向到 Google。

但在 Azure 应用服务上上传后,代码不起作用。 重定向后我看到一个空白页面。 URL 保持不变(我的网站 URL,而不是 Google 的。)

Azure 是否存在任何错误配置?

我的 .htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]

【问题讨论】:

  • 你从 php 的 error.log 中得到任何提示吗?或者是否可以将“display_errors”与 ini_set("display_errors",1);以便您可能看到错误、警告或通知?
  • 我的 Azure 错误日志中没有错误。我还检查了返回标题,结果它的状态为 200 OK,正文为空白。
  • 这是网址。我猜我的 .htaccess 有一些配置错误

标签: php azure apache http https


【解决方案1】:

我建议你在创建webapps时选择windows平台。

您可以尝试在 wwwroot 文件夹下创建web.config 文件,如果它不存在。如果你在部署你的 webapp 时能找到这个文件,你需要修改它。

具体要添加或修改的内容是RewriterConfig需要添加到web.config中。

格式如下:

<configSections>
 <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler,URLRewriter" />
</configSections>
......
<RewriterConfig>
   <Rules>
      <RewriterRule>
        <LookFor>^default/([0-9]+)/([_0-9a-z-]+)</LookFor>
        <SendTo>11.aspx?id={R:1}</SendTo>
      </RewriterRule>
   </Rules>
</RewriterConfig>

更多详情可以参考以下两篇帖子:

Azure Web App Angular Not redirecting to www

DNN UrlRewrite (“DotNetNuke.HttpModules.UrlRewriteModule, DotNetNuke.HttpModules”) does not run custom rewrite rule on web.config

【讨论】:

  • 我不能在 Linux 上运行它吗? web.config 现在不在我的根文件夹中。另外,您编写的格式是针对 ASPX 的,对吗?我会找一个php版本的。
  • Linux?或许你需要试试?
  • 如果没有,我会尽力帮助你!
  • 好的。我现在正在测试这个。谢谢!
  • 嗨,我尝试在代码上做一些工作,发现 ("include/DbOperation.php") 导致了一些问题。当我删除线时,它工作正常。 DbOperation 文件正在连接数据库并进行数据库操作。
【解决方案2】:

第 1 步:启用 Apache .htaccess

默认情况下,.htaccess 文件未启用。

1.在终端输入以下命令打开默认主机配置文件:

sudo nano /etc/apache2/sites-available/default

2. 找到标有&lt;Directory /var/www&gt; 的部分。 在该部分中,将 AllowOverride None 条目更改为 all

AllowOverride All

保存文件并退出。

3.接下来,重新启动 Apache 服务:

sudo systemctl apache2 restart

【讨论】:

  • 嘿,更改设置不走运。我把它交给了一个朋友,他不知道该怎么做。我们一直在寻找如何访问 apache 配置。在 mywebsite.azurewebsites.net/webssh/host 上尝试过。找不到任何可用目录。我们可以在 Azure Web App 中访问 Apache 配置吗?
  • 嗨,我对我的代码做了一些研究。原来我包含了一个文件“require_once ("include/DbOperation.php");”。当我删除这一行时,代码会完美执行。在 DbOperation.php 中,我正在连接数据库并执行数据库操作。
  • 我将服务器更改为 windows 并添加了 web.config。它现在正在工作。谢谢你的时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-15
  • 2017-09-28
  • 1970-01-01
  • 2012-01-06
  • 1970-01-01
相关资源
最近更新 更多