Спасибо, что прочитали мой пост.
У меня проблема с корректной работой приложения веб-сайта (Yii2) в веб-приложениях Azure. Я перенес свои сайты Yii2 с существующего сервера на веб-приложения Azure. После множества манипуляций, перечисленных ниже, я могу зайти на сайт.
Основная тема успешно загружена, но выбрасывает "404 Страница не найдена
Запрашиваемая страница отсутствует или адрес был изменен: «Ошибка в теле и другие ссылки в« строке меню »тоже не работают». Требуемый ресурс был удален, изменилось его имя или временно недоступен . "
Ресурсы Azure настроены следующим образом:
- 1 x План обслуживания приложения: S1: 1 (Windows Base)
- 1 x База данных Azure для сервера MySQL
- 1 x Служба приложений (Веб-приложение)
Настройка приложения-службы приложения:
- .Net Framwork: v4.7
- Версия PHP: 7.0
- Платформа: 32-битная
Шаги миграции:
- FTP все файлы / папки от
htdocs
на моем существующем сервере до моего плана обслуживания приложений (\site/wwwroot
)
- Создание таблицы SQL в PhpAdmin
- Найти и заменить
ENGINE=InnoDB DEFAULT CHARSET=utf8;
в скрипте
- Подключитесь к базе данных Azure для сервера 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',
];
- Перезагрузите веб-приложение
- Проверьте https://yourdomain.com/requirements.php (прошло без ошибок)
- "При поиске нового веб-приложения был удален искомый ресурс, было изменено его имя или он временно недоступен".
- Окна 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 Portal / Web App / Application. Измените каталог по умолчанию с сайта \ wwwroot на site \ wwwroot \ web
- Перезапустите веб-приложение.
Домашняя страница теперь успешно загружается, но в теле сообщения об ошибке 404 и «Требуемый ресурс удален, его имя изменено или временно недоступно». при попытке доступа к другим страницам в шапке.
Я также заметил, что у меня есть 2 .htacss файла
1x на моем \ site \ wwwroot и 1x на моем \ site \ wwwroot \ web
Хавед попытался удалить их и настроить файл web.config в (site \ wwwroot \ web), но все еще не работает.
<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, нигде не могу найти решение. Буду признателен, если вы можете помочь вместе.