Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用子目录在Azure上设置Wordpress多站点_Wordpress_Azure_Multisite - Fatal编程技术网

如何使用子目录在Azure上设置Wordpress多站点

如何使用子目录在Azure上设置Wordpress多站点,wordpress,azure,multisite,Wordpress,Azure,Multisite,关于使用子目录在Windows Azure上运行的Wordpress Multisite的一个问题:它能工作吗?你是怎么做到的? 我已经从Azure Gallery安装了Wordpress(4.2.2),更新了wp.config.php和web.config文件以启用和安装多站点,但结果是一个半工作的解决方案:安装了多站点,我可以创建和删除新站点,但新站点没有css样式(404错误),我无法访问它们的管理仪表盘(404:您正在查找的资源已被删除、名称已更改或暂时不可用) 例如,基础网站: 工作

关于使用子目录在Windows Azure上运行的Wordpress Multisite的一个问题:它能工作吗?你是怎么做到的?

我已经从Azure Gallery安装了Wordpress(4.2.2),更新了wp.config.php和web.config文件以启用和安装多站点,但结果是一个半工作的解决方案:安装了多站点,我可以创建和删除新站点,但新站点没有css样式(404错误),我无法访问它们的管理仪表盘(404:您正在查找的资源已被删除、名称已更改或暂时不可用)

例如,基础网站:

工作正常。但多站点:

显示一个未设置样式的css网站,但我不能真正使用它们,因为我没有管理员访问权限;可能是路由错误

更多详细信息

我遵循了这篇如何操作的文章:,在Azure上为子目录设置Wordpress Multisite。我没有遵循题为“添加自定义域”的部分,因为我不想这样做(无论如何,现在)

我的web.config文件是:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="WordPress Rule 1" stopProcessing="true">
                    <match url="^index\.php$" ignoreCase="false" />
                    <action type="None" />
                </rule>
                <rule name="WordPress Rule 2" stopProcessing="true">
                    <match url="^([_0-9a-zA-Z-]+/)?wp-admin$" ignoreCase="false" />
                    <action type="Redirect" url="{R:1}wp-admin/" redirectType="Permanent" />
                </rule>
                <rule name="WordPress Rule 3" stopProcessing="true">
                    <match url="^" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
                    </conditions>
                    <action type="None" />
                </rule>
                <rule name="WordPress Rule 4" stopProcessing="true">
                    <match url="^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*)" ignoreCase="false" />
                    <action type="Rewrite" url="{R:1}" />
                </rule>
                <rule name="WordPress Rule 5" stopProcessing="true">
                    <match url="^([_0-9a-zA-Z-]+/)?([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
                    <action type="Rewrite" url="{R:2}" />
                </rule>
                <rule name="WordPress Rule 6" stopProcessing="true">
                    <match url="." ignoreCase="false" />
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
我尝试过的事情

  • 使用免费和共享托管解决方案
  • 检查permalinks在标准wordpress和1号基本站点(so)上的工作 mywordpressmultisite.azurewebsites.net/helloworld works)
  • 清理数据库并再次启动整个过程
  • 更改文件权限以允许读取、写入和执行;以防万一
调试

我已将Windows Azure上的WebApp配置为记录所有可能的内容,但它不会输出任何内容。在php_error.log或其他日志文件中,我找不到任何内容。我已将wordpress wp-config.php配置为如下所示,但我仍然找不到任何内容:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', true);
@ini_set('display_errors', 0);
我在哪里
我对如何完成这项工作已经没有任何想法了,我开始怀疑它是否真的能在Azure的子目录上工作?我在web上看到过其他关于这个问题的参考,但没有解决方案。

IIS上的这个stackoverflow问题有答案:

它为web.config提供了这个XML

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="WordPress Rule 1" stopProcessing="true">
                    <match url="^index\.php$" ignoreCase="false" />
                    <action type="None" />
                </rule>
                <rule name="WordPress Rule 2" stopProcessing="true">
                    <match url="^([_0-9a-zA-Z-]+/)?files/(.+)" ignoreCase="false" />
                    <action type="Rewrite" url="wp-includes/ms-files.php?file={R:2}" appendQueryString="false" />
                </rule>
                <rule name="WordPress Rule 3" stopProcessing="true">
                    <match url="^([_0-9a-zA-Z-]+/)?wp-admin$" ignoreCase="false" />
                    <action type="Redirect" url="{R:1}wp-admin/" redirectType="Permanent" />
                </rule>
                <rule name="WordPress Rule 4" stopProcessing="true">
                    <match url="^" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
                    </conditions>
                    <action type="None" />
                </rule>
                <rule name="WordPress Rule 5" stopProcessing="true">
                    <match url="(^[_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*)" ignoreCase="false" />
                    <action type="Rewrite" url="{R:2}" />
                </rule>
                <rule name="WordPress Rule 6" stopProcessing="true">
                    <match url="^([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
                    <action type="Rewrite" url="{R:2}" />
                </rule>
                <rule name="WordPress Rule 7" stopProcessing="true">
                    <match url="." ignoreCase="false" />
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

也许有助于解决这个问题

编辑: 这些IIS web.config路由重写规则似乎基于此处给出的Apache.htaccess和Mod rewrite规则:

我在上面找到并使用的web.config确实有效,它似乎是从一个.htaccess文件派生出来的,该文件的目标是<3.5的Wordpress版本

其中,作为Mulisite安装的一部分,Wordpress提供的原始版本基于针对Wordpress 3.5+的.htaccess文件

Web.config文件差异 从正在工作的web.config中引用与不工作的web.config中的规则相关的规则:

  • 规则1:是相同的
  • 规则2:这是一个附加规则。查看Wordpress文档,Wordpress版本3.5+(新安装)不再需要此规则,因为不再使用ms-files.php,因此可以删除它
  • [以下规则现在不同步!]
  • 规则3:与非工作web.config的规则2相同
  • 规则4:与原始web.config的规则3相同
  • 规则5.几乎相同,但反向引用url=“{R:1}”不同。工作版本使用url=“{R:2}”。我在其他地方也看到了此修复
  • 规则6:这与原始文件中的规则5相似,但正则表达式较短;然而,在我看来,这些正则表达式可能相当于同一个东西。我坚持使用较短的版本
  • 规则7:与原始web.config中的规则6相同
给我留下一个现在看起来像这样的修改版本:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="WordPress Rule 1 Identical" stopProcessing="true">
                    <match url="^index\.php$" ignoreCase="false" />
                    <action type="None" />
                </rule>

                <rule name="WordPress Rule 3 Identical" stopProcessing="true">
                    <match url="^([_0-9a-zA-Z-]+/)?wp-admin$" ignoreCase="false" />
                    <action type="Redirect" url="{R:1}wp-admin/" redirectType="Permanent" />
                </rule>

                <rule name="WordPress Rule 4 Identical" stopProcessing="true">
                    <match url="^" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
                    </conditions>
                    <action type="None" />
                </rule>

                <rule name="WordPress Rule 5 R2" stopProcessing="true">
                    <match url="^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*)" ignoreCase="false" />
                    <action type="Rewrite" url="{R:2}" />
                </rule>

                <rule name="WordPress Rule 6 Shorter" stopProcessing="true">
                    <match url="^([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
                    <action type="Rewrite" url="{R:2}" />
                </rule>


                <rule name="WordPress Rule 7 Identical" stopProcessing="true">
                    <match url="." ignoreCase="false" />
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>


当您不知道wordpress如何处理多站点路由时,很难确定web.config文件中应该包含什么内容。以上答案基于.htaccess文件的建议设置。本文:解释wordpress如何处理路由。我已经试用了您的web.config的上一个版本,它可以正常工作。感谢您提供详细的经验lanation:)从过去24小时以来,我一直在尝试解决多站点资源404问题,您的重写规则版本帮助我解决了这个问题。非常感谢,你是救世主。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="WordPress Rule 1 Identical" stopProcessing="true">
                    <match url="^index\.php$" ignoreCase="false" />
                    <action type="None" />
                </rule>

                <rule name="WordPress Rule 3 Identical" stopProcessing="true">
                    <match url="^([_0-9a-zA-Z-]+/)?wp-admin$" ignoreCase="false" />
                    <action type="Redirect" url="{R:1}wp-admin/" redirectType="Permanent" />
                </rule>

                <rule name="WordPress Rule 4 Identical" stopProcessing="true">
                    <match url="^" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
                    </conditions>
                    <action type="None" />
                </rule>

                <rule name="WordPress Rule 5 R2" stopProcessing="true">
                    <match url="^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*)" ignoreCase="false" />
                    <action type="Rewrite" url="{R:2}" />
                </rule>

                <rule name="WordPress Rule 6 Shorter" stopProcessing="true">
                    <match url="^([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
                    <action type="Rewrite" url="{R:2}" />
                </rule>


                <rule name="WordPress Rule 7 Identical" stopProcessing="true">
                    <match url="." ignoreCase="false" />
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>