【发布时间】:2021-10-10 04:17:47
【问题描述】:
我使用应用服务在 azure 上创建了一个 PHP 网站。我通过 bitbucket 使用持续部署。我需要在我的代码中将网站指向公共文件夹以运行应用程序,因为它是使用 zend 框架构建的。
经过一番搜索,无法找到如何将服务器指向的文件夹更改为默认目录。
【问题讨论】:
标签: php azure zend-framework
我使用应用服务在 azure 上创建了一个 PHP 网站。我通过 bitbucket 使用持续部署。我需要在我的代码中将网站指向公共文件夹以运行应用程序,因为它是使用 zend 框架构建的。
经过一番搜索,无法找到如何将服务器指向的文件夹更改为默认目录。
【问题讨论】:
标签: php azure zend-framework
转到 Azure Web 应用程序设置 -> 应用程序设置 -> 虚拟应用程序和目录并设置新文件夹的物理路径。还要检查应用程序复选框。
重启网络应用一次。
【讨论】:
有几种可能的情况:
在第一个场景(Windows 应用服务)中,您可以转到应用服务 > 设置 > 配置刀片,您需要选择选项卡“路径映射”,您可以在其中设置虚拟应用程序路径,如下所示:“/”映射到“站点\wwwroot\public”。
在第二种情况下,您可以使用@Ed Greenberg 描述的 .htaccess 解决方案,即使对于 Zend Framework,我建议使用以下设置:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /index.php [NC,L]
对于第三种情况,您将面临更多挑战,因为 Apache 被 Nginx 取代并且重写规则不再适用。请参阅我的详细博客文章“PHP 8 on Azure App Service”,了解如何使用适用于 PHP 8 的新 Azure 应用服务解决这一挑战和其他挑战。
祝你好运,如果它解决了你的问题,请告诉我。
【讨论】:
2021 年的正确答案(对于 Laravel,可能还有其他带有 /public 目录的框架)是在 webroot 目录中放置一个额外的 .htaccess。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
【讨论】: