2

サブディレクトリを使用して Windows Azure で実行されている Wordpress マルチサイトに関する質問: 動作しますか? どのようにしますか?

Azure ギャラリーから Wordpress (4.2.2) をインストールし、wp.config.php ファイルと web.config ファイルを更新してマルチサイトを有効にしてインストールしましたが、結果は半分しか機能しないソリューションです。新しいサイトを作成および削除できますが、新しいサイトには CSS スタイルがなく (404 エラー)、管理ダッシュボードにアクセスできません (404: お探しのリソースは削除されたか、名前が変更されたか、一時的に利用できません) )。

たとえば、ベース Web サイトは次のようになります。

http://mywordpressmultisite.azurewebsites.net

正常に動作します。しかし、マルチサイト:

http://mywordpressmultisite.azurewebsites.net/site2/ http://mywordpressmultisite.azurewebsites.net/site3/

スタイルが設定されていない CSS Web サイトを表示しますが、管理者アクセス権がないため、実際には何もできません。おそらくルーティングエラーです。

詳細

このハウツー記事に従いました: https://azure.microsoft.com/en-gb/documentation/articles/web-sites-php-convert-wordpress-multisite/、サブ用に Azure で Wordpress Multisite をセットアップする-ディレクトリ。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>

私の 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);

私が試したこと

  • 無料ホスティング ソリューションと共有ホスティング ソリューションの両方を使用します。
  • パーマリンクのチェックは、標準のワードプレスとベース No1 サイトで機能します (つまり、mywordpressmultisite.azurewebsites.net/helloworld が機能します)。
  • データベースをスクラブダウンし、プロセス全体を再度開始します。
  • 読み取り、書き込み、および実行を許可するようにファイルのアクセス許可を変更します。念のため。

デバッグ

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 でこの問題に関する他の参照を見ましたが、解決策はありません。

4

1 に答える 1

7

IIS に関するこのスタックオーバーフローの質問には答えがあります。

wordpressのサブドメインのサブディレクトリマルチサイトの管理パネルで404エラーが発生する

この XML を 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-]+/)?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>

これを Azure にアップロードしましたが、動作します。テーマとダッシュボードにアクセスできるようになりました。

エラーが元の web.config のどこにあるのかわかりません。Wordpress が間違った web.config xml を提供しているように見えるので知りたいのですが、http: //www.iis.net/learn/extensions/url-rewrite -module/url-rewrite-module-configuration-referenceが解決に役立つ場合があります。

編集:

これらの IIS web.config ルーティング書き換えルールは、 https ://codex.wordpress.org/Multisite_Network_Administration にある Apache .htaccess および Mod 書き換えルールに基づいているようです。

上記で見つけて使用した web.config は、Wordpress バージョン < 3.5 を対象とする .htaccess ファイルから派生したように見えます。

Mulisite インストールの一部として Wordpress によって提供される元のバージョンは、Wordpress 3.5+ をターゲットとする .htaccess ファイルに基づいています。

Web.config ファイルの相違点

動作しない web.config の規則に対して、動作する web.config の規則を参照する:

  • ルール 1: 同一です。
  • ルール 2: これは追加のルールです。Wordpress のドキュメントを確認すると、ms-files.php は使用されなくなったため、Wordpress バージョン 3.5 以降 (新規インストール) ではこのルールは不要になったため、削除できます。
  • [以下のルールは現在同期されていません!]
  • ルール 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>
于 2015-06-12T20:26:25.507 に答える