azure - Yii2 框架到 Azure Web 应用程序(404 页面未找到)
问题描述
感谢您阅读我的帖子。
我在使我的网站应用程序 (Yii2) 在 Azure Web 应用程序中正常工作时遇到问题。我已将 Yii2 网站从现有服务器迁移到 Azure Web 应用程序。经过下面列出的大量操作,我能够访问该网站。
主题加载成功,但抛出“404 页面未找到请求的页面丢失,或地址已更改”正文中的错误,“菜单栏”中的其他链接也不起作用。“您要查找的资源已被删除、更改名称或暂时不可用。”
Azure 资源配置如下:
- 1 x 应用服务计划:S1:1(Windows 基础)
- 1 x Azure Database for MySQL 服务器
- 1 个应用服务(Web 应用)
应用服务应用设置:
- .Net 框架:v4.7
- PHP版本:7.0
- 平台:32位
迁移步骤:
- 将现有服务器中的所有文件/文件夹通过 FTP 传输
htdocs
到我的应用服务计划 (\site/wwwroot
) - 在 PhpAdmin 中生成 SQL 表创建
ENGINE=InnoDB DEFAULT CHARSET=utf8;
在脚本中查找和替换- 连接到 Azure Database for MySQL 服务器,创建新架构并运行脚本
在 Azure 中,KUDU Inferface 浏览 (\site\wwwroot\config) 并将 db.php 更改为
<?php return [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=xxxx.mysql.database.azure.com;dbname=xxxxx', 'username' => 'xxxxxxx@xxxxxxxxxxxxxxxxxx', 'password' => 'xxxxxx', 'charset' => 'utf8', ];
- 重新启动 Web 应用程序
- 检查https://yourdomain.com/requirements.php(通过没有任何错误)
- 尝试浏览新的 Web 应用程序时,“您要查找的资源已被删除、名称已更改或暂时不可用”。
- KUDO PowerShell 窗口浏览
site/wwwroot
并执行以下代码行php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php composer-setup.php php composer.phar global require "fxp/composer-asset-plugin:^1.2.0"
浏览到目录 (\site\wwwroot\web) 并使用以下代码行更改 index.php:
if (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] !== 'on') { if(!headers_sent()) { header("Status: 301 Moved Permanently"); header(sprintf( 'Location: https://%s%s', $_SERVER['HTTP_HOST'], $_SERVER['REQUEST_URI'] )); exit(); } } // comment out the following two lines when deployed to production ('YII_DEBUG') or define('YII_DEBUG', false); defined('YII_ENV') or define('YII_ENV', 'prod'); require(__DIR__ . '/../vendor/autoload.php'); require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php'); $config = require(__DIR__ . '/../config/web.php'); (new yii\web\Application($config))->run();
- 在 Azure 门户/Web 应用程序/应用程序设置中,将默认目录从 site\wwwroot 更改为 site\wwwroot\web
- 重新启动 Web 应用程序。
他们现在可以成功加载主页,但正文中出现 404 错误,并且“您要查找的资源已被删除、名称已更改或暂时不可用”。尝试访问页眉中的其他页面时。
我还注意到我的 \site\wwwroot 中有 2 个 .htacss 文件 1x 和我的 \site\wwwroot\web 中有 1x 尝试删除它们并在 (site\wwwroot\web) 中配置 web.config 文件但仍然无法正常工作.
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Redirect rquests to default azure websites domain" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" pattern="^yoursite\.azurewebsites\.net$" />
</conditions>
<action type="Redirect" url="https://mysitename.azurewebsites.net/{R:0}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
由于 Yii2 在 Azure Web App 中并不出名,因此在任何地方都找不到解决方案。如果您能提供帮助,将不胜感激。
解决方案
推荐阅读
- android - 设备离线时未发送显示消息,设备在线时显示消息已发送 firebase firestore
- f# - F# 和 WPF(Visual Studio 2019 社区)的模板?
- arrays - 如何将一个数组划分为 K 个子数组,以使所有子数组中重复元素的数量之和最小?
- flutter - 数据表不显示 Flutter 中的所有行
- c# - 当尝试在 linq 中比较日期时,我在 .net 中遇到了这个异常
- java - 使用 Spring 数据 JDBC 时未找到 JdbcSQLSyntaxErrorException 列
- python-3.x - 计算 ATM 的欧几里得距离
- javascript - 单击图标时的下拉菜单-ReactJS
- java - Java String Split 以实现 HashMap
- dataframe - Pyspark 在循环中重复