Ant*_*ony 2 wordpress azure multisite
关于使用子目录在Windows Azure上运行的Wordpress Multisite的问题:它有效吗?你怎么做呢?.
我已经从Azure Gallery安装了Wordpress(4.2.2),更新了wp.config.php和web.config文件以启用和安装Multisites,但结果是半工作解决方案:安装了多个站点,我可以创建和删除新网站,但新网站没有CSS样式(404错误),我无法访问他们的管理仪表板(404:您要查找的资源已被删除,名称已更改,或暂时不可用).
那么,例如,基础网站:
http://mywordpressmultisite.azurewebsites.net
工作良好.但是多站点:
http://mywordpressmultisite.azurewebsites.net/site2/ http://mywordpressmultisite.azurewebsites.net/site3/
显示一个没有样式的CSS网站,但由于我没有管理员权限,我无法对它们做任何事情; 也许是路由错误.
更多细节
我已经按照这篇文章:https://azure.microsoft.com/en-gb/documentation/articles/web-sites-php-convert-wordpress-multisite/,在Azure上设置Wordpress Multisite for sub -directories.我没有关注过去标题为Add Custom Domains的部分,因为我不想这样做(但是,无论如何).
我的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>
Run Code Online (Sandbox Code Playgroud)
我的wp-config.php是:
define( 'WP_ALLOW_MULTISITE', true );
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'mywordpressmultisite.azurewebsites.net');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
Run Code Online (Sandbox Code Playgroud)
我尝试过的事情
调试
我已经在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);
Run Code Online (Sandbox Code Playgroud)
在哪里,我 对如何完成这项工作的想法很不满意,我开始怀疑它是否确实在Azure上用于子目录?我在网上看到过这个问题的其他参考但没有解决方案.
IIS上的这个stackoverflow问题有答案:
管理面板上的子目录多站点在wordpress中的子域上获得404错误
它为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>
Run Code Online (Sandbox Code Playgroud)
我已将此上传到Azure,它可以正常工作.现在可以访问主题和仪表板.
不知道原始web.config中的错误在哪里,我想知道,因为Wordpress似乎提供了错误的web.config xml,但是http://www.iis.net/learn/extensions/url-rewrite -module/url-rewrite-module-configuration-reference可能有助于解决问题.
似乎这些IIS web.config路由重写规则基于此处给出的Apache .htaccess和Mod重写规则:https://codex.wordpress.org/Multisite_Network_Administration
我在上面找到并使用的web.config确实有效,它似乎是从目标为<3.5的Wordpress版本的.htaccess文件派生而来的.
作为Mulisite安装的一部分,Wordpress提供的原始版本基于针对Wordpress 3.5+的.htaccess文件.
引用来自工作web.config的规则与那些不起作用的规则相关:
给我留下一个重新设计的版本,现在看起来像这样:
<?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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1354 次 |
| 最近记录: |