Azure和CakePHP的3子目录
- 我的第一个问题是,我不能让CakePHP的3个工作正确的子目录HOSTEN Azure中(所以我必须使用web.config中的重写规则)
- 我想配置我的顶级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
谢谢,回答那一个部分的问题。这可以解决资源问题,但不能解决cakePHP在子目录中的问题。你在域名旁边写的任何东西都被认为是来自cakePHP的控制器,在根目录下定义一个不同的网站时遇到困难。我正在使用web.config配置寻找完整的解决方案。 – xinaris
您可能还需要把这个[web.config文件(https://stackoverflow.com/questions/12713780/rewrite-rules-not-working-for-cakephp-on-iis/18944001#18944001)为'/仪表板'目录。 –