【问题标题】:Azure and CakePHP 3 in subdirectory子目录中的 Azure 和 CakePHP 3
【发布时间】:2017-06-27 15:21:40
【问题描述】:
  1. 我的第一个问题是我无法让 CakePHP 3 在 Azure 中的托管子目录中正常工作(因此我必须使用 web.config 来设置重写规则)
  2. 我想配置我的顶级 web.config 以便在根目录下拥有其他 php 文件并对其进行一些重写规则。

我想要实现的结构:

-file1.php

-file2.php

-文件夹/file3.php

-index.php

-/dashboard/ 包含 cakePHP 3 的目录

例如我的域名是https://mydomain.azurewebsites.net

当我写https://mydomain.azurewebsites.net/dashboard 时,我需要做任何与 cakePHP 相关的事情。如果我写 https://mydomain.azurewebsites.net/dashboard/users/list 我正在导航到“用户”控制器中的模板视图“列表”。 我在 /dashboard 之前写的任何其他内容我都不会将 cakePHP 视为控制器或类似内容。

现状

现在写如果我去https://mydomain.azurewebsites.net/dashboard/users/list页面加载正确但是因为我正在加载文件中的资源,例如:

<link href="/webroot/backend/pages.css" rel="stylesheet" type="text/css"> 

资源正在尝试从https://mydomain.azurewebsites.net/webroot/backend/pages.css 加载,但没有 https://mydomain.azurewebsites.net/dashboard/webroot/backend/pages.css

我发现我认为不好的解决方案

有定义

<?php 
use Cake\Routing\Router;
$path = Router::url('/', true); 
?>

并在资源声明前使用 $path。这意味着我必须更改我的所有项目以包含此 $path。

任何帮助重写规则或任何其他人谁在 Azure 的子目录中托管 cakePHP 3?

【问题讨论】:

    标签: php azure web-config azure-web-app-service cakephp-3.x


    【解决方案1】:

    您可以将web.config 文件添加到您的Azure 网站的根目录,默认为:D:\home\site\wwwroot。并添加如下重写配置设置:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <system.webServer>
            <rewrite>
                <rules>
                    <rule name="Rewrite to dashboard" stopProcessing="true">
                        <match url="^webroot/backend/(.*)$" />
                        <action type="Rewrite" url="dashboard/webroot/backend/{R:1}"
                          appendQueryString="false" />
                    </rule>
                </rules>
            </rewrite>
        </system.webServer>
    </configuration>
    

    通过这个文件,任何资源请求如:

    https://mydomain.azurewebsites.net/webroot/backend/pages.css
    

    将被重定向到:

    https://mydomain.azurewebsites.net/dashboard/webroot/backend/pages.css
    

    【讨论】:

    • 谢谢,这回答了问题的一部分。这样可以解决资源的问题,但不能解决 cakePHP 在子目录下的问题。您在域旁边编写的任何内容都被视为 cakePHP 的控制器,无法在根目录中定义不同的网站。我一直在寻找带有 web.config 配置的完整解决方案。
    • 你可能还需要把这个web.config放到/dashboard目录下。
    猜你喜欢
    • 1970-01-01
    • 2016-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-20
    • 2011-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多