Azure和CakePHP的3子目录

问题描述:

  1. 我的第一个问题是,我不能让CakePHP的3个工作正确的子目录HOSTEN Azure中(所以我必须使用web.config中的重写规则)
  2. 我想配置我的顶级web.config为了有其他的PHP文件在根目录,并且还有一些重写规则。

我的结构我想实现:Azure和CakePHP的3子目录

-file1.php

-file2.php

-folder/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"> 

中的recources正试图从加载https://mydomain.azurewebsites.net/webroot/backend/pages.css但不是 https://mydomain.azurewebsites.net/dashboard/webroot/backend/pages.css

解决方案我发现我不考虑去OD

有定义

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

,并在资源声明前使用$路径。这意味着我必须改变我的所有项目以包含这个$路径。

任何帮助与重写规则或任何其他谁承办cakephp 3在Azure子目录中?

您可以将一个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 
+0

谢谢,回答那一个部分的问题。这可以解决资源问题,但不能解决cakePHP在子目录中的问题。你在域名旁边写的任何东西都被认为是来自cakePHP的控制器,在根目录下定义一个不同的网站时遇到困难。我正在使用web.config配置寻找完整的解决方案。 – xinaris

+0

您可能还需要把这个[web.config文件(https://stackoverflow.com/questions/12713780/rewrite-rules-not-working-for-cakephp-on-iis/18944001#18944001)为'/仪表板'目录。 –