Yii2框架到Azure Web App(找不到404页)

时间:2019-06-26 07:06:05

标签: azure yii2 azure-web-app-service

感谢您阅读我的帖子。

我在使我的网站应用程序(Yii2)在Azure Web Apps中正常工作时遇到问题。我已经将Yii2网站从现有服务器迁移到Azure Web Apps。经过下面列出的大量操作,我可以访问该网站。

主主题加载成功,但抛出“ 404页面未找到 所请求的页面丢失,或地址已更改”“正文中的错误以及“菜单栏”中的其他链接也无法正常工作。”“您正在寻找的资源已被删除,名称已更改或暂时不可用。”

Azure资源的配置如下:

  • 1个应用服务计划:S1:1(基于Windows)
  • 1个用于MySQL服务器的Azure数据库
  • 1 x应用服务(网络应用)

应用程序服务应用程序设置:

  • .Net框架:v4.7
  • PHP版本:7.0
  • 平台:32位

迁移步骤:

  1. 将所有文件/文件夹从现有服务器中的htdocs FTP到我的应用服务计划(\site/wwwroot
  2. 在PhpAdmin中生成SQL表创建
  3. 在脚本中查找并替换ENGINE=InnoDB DEFAULT CHARSET=utf8;
  4. 连接到适用于MySQL服务器的Azure数据库,创建新架构并运行脚本
  5. 在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',
    ];
    
  6. 重新启动Web应用
  7. 检查https://yourdomain.com/requirements.php(已通过,没有任何错误)
  8. 尝试浏览新的Web应用程序时,“您正在寻找的资源已被删除,名称已更改或暂时不可用。”
  9. 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"
    
  10. 浏览到目录(\ 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();
    
  11. 从Azure门户/ Web应用程序/应用程序设置中,将默认目录从site \ wwwroot更改为site \ wwwroot \ web
  12. 重新启动Web应用。

它们现在可以成功加载主页,但是主体内出现404错误,并且“正在查找的资源已被删除,名称已更改或暂时不可用。”尝试访问标题中的其他页面时。

我还指出,我有2个.htacss文件 我的\ site \ wwwroot中的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中并不出名,因此无法在任何地方找到解决方案。如果您能提供帮助,将不胜感激。

0 个答案:

没有答案