• masak0521

    (@masak0521)


    www.site.com のwordpressサイトを運用している配下に www.site.con/02 のような形でふたつめのワードプレスをインストールしたところ、トップページ以外は www.site.com の配下とみなされ404エラーとなってしまいます(マルチサイト化はしておりません)。

    02はそれまで他ドメインで運用していたサイトとなります

    02サイトをインストールした空の状態では問題なく遷移していたのですが、サイトデータをAll-in-One WP Migrationでインポートした際に表示できなくなったので、インポートデータの設定にどこか問題があるのかもしれません

    パーマリンク設定の空更新や .htaccess の記載などネットの情報を元に色々試してみたのですが、改善されませんでした

    トップページは表示されているのでDBなどの問題ではないと思うのですが・・・

    チェックすべき点などありましたらご教授いただきたく存じます。

14件の返信を表示中 - 1 - 14件目 (全14件中)
  • モデレーター Setouchi Kotori

    (@setouchikotori)

    設定 > 一般WordPress アドレス (URL)サイトアドレス (URL) は現在のもの (https://www.site.com/02) になっていますか?

    モデレーター Setouchi Kotori

    (@setouchikotori)

    また、.htaccess の中身 (上位ディレクトリと /02/ の両方) を貼っていただくと、具体的なアドバイスが得られるかもしれません。

    トピック投稿者 masak0521

    (@masak0521)

    ご返信ありがとうございます。

    設定-一般のアドレスは02のものになっております。

    htaccessの内容は下記となります

    上位の「RewriteCond %{REQUEST_URI} !^/02」の箇所はネット記事であったものですが、だめでした・・・

    ここで02の場合は転送しないといった指示を書けばよいと思うのですが(そもそもそれが見当違いかもしれませんが)、適切な書き方が分かりません

    **上位**

    RewriteEngine On
    RewriteBase /
    RewriteRule ^index.php$ - [L]
    RewriteCond %{REQUEST_URI} !^/02
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

    **下位**

    RewriteEngine On
    RewriteBase /02/
    RewriteRule ^index.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /02/index.php [L]
    • この返信は3ヶ月前にSetouchi Kotoriが編集しました。理由: コードブロックの適切な使用
    モデレーター Setouchi Kotori

    (@setouchikotori)

    バックアップを取り、上位の .htaccess を以下のように書き換えてみてください。

    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    # 下位ディレクトリを除外し、親サイトのルールが適用されないようにする
    RewriteCond %{REQUEST_URI} ^/02/ [NC]
    RewriteRule .* - [L]

    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
    # END WordPress

    この設定では、www.site.com (親サイト) の .htaccess に「/02 ディレクトリを除外するルール」を追加しています。これにより、www.site.com/02/ 以下のアクセスが親サイト側にリダイレクトされたり、親サイトのリライトルールで上書きされたりすることがなくなります。

    反映されなければ、

    パーマリンク設定の空更新

    をお試しください。

    トピック投稿者 masak0521

    (@masak0521)

    ありがとうございます。

    ただ上記のようにhtaccessを更新してみましたが、状態は変わらずでした・・・転送系のプラグインが干渉している気もするのですが、そのあたりのプラグインを無効にしても変化はありませんでした・・・

    モデレーター Setouchi Kotori

    (@setouchikotori)

    サーバーキャッシュ・ブラウザキャッシュの影響はどうでしょうか?

    トピック投稿者 masak0521

    (@masak0521)

    キャッシュクリアやブラウザキャッシュの削除、他のマシンからも確認してみましたがダメでした・・・

    mokkosan

    (@mokkosan)

    通常、そのような運用(ルート直下とサブディレクトリの両方にWordPressを設置)を行う場合は、単純にウェブルートに1つ、サブディレクトリ /02 に1つ、それぞれ独立してWordPressをインストールすれば問題なく稼働します。
    「別々に」というのは、データベースを分けるか、少なくともテーブル接頭辞($table_prefix)を変更するという意味です。
    なぜこれで動作するかというと、WordPressが自動で作成する .htaccess には次の行が含まれているためです:

    RewriteCond %{REQUEST_FILENAME} !-d

    「!-d」は、「実際に存在するディレクトリを除外する」という条件なので、/02 ディレクトリが実在すれば、ルート側のリライトルールでは書き換え対象外になります。
    そのため、サイトURLの設定(https://www.example.com/ と https://www.example.com/02/)が正しく行われていれば、特別な調整なしで両方のWordPressが素直に稼働します。

    ただし、サーバの設定(Apacheの場合)で、次の二つが必要です。
    (1)AllowOverride All が DocumentRoot と /02 の両方で有効になっていること
    (2)mod_rewrite が有効なこと

    また、サーバがApacheではなくNginxの場合、.htaccess が使えないため、サーバーブロック内で location /02/ { … } を別途設定して、ルーティングを分ける必要があります。

    さて、普通ならWebサーバの設定があっている限りさわらなくても動くはずのものが動かないとなると、ルート側に入れているキャッシュ系のプラグインが、/02側も巻き込んでルート側の.htaccessを書き換えちゃう場合が考えられます。この場合は、ルート側のキャッシュプラグインの設定で、/02ディレクトリをキャッシュの対象から外してキャッシュを再構築しましょう。

    mokkosan

    (@mokkosan)

    あ、そういえば、ここから4つ上のことりさんのレスで、「パーマリンク設定の空更新」を行うようにアドバイスくださっていますが、その次のmasak0521さんのレスでは、.htaccessの変更はしたことが書いてありますが、パーマリンクの空更新はやったのかどうか書いてません。そちらはどのようになりましたでしょうか?一応、あとから読む人のためにもはっきり明記くださると幸いです。

    トピック投稿者 masak0521

    (@masak0521)

    詳しくありがとうございます。

    サーバはApacheで、データベースも分けています。htaccessの更新後にパーマリンクの空更新も実施いたしました。

    AllowOverride、mod_rewrite も設定されていると思います(若干自信が無いですが・・・)

    最初の投稿でも書いたのですが、下層02に空のWordpressを入れた段階では問題なかったものがAll-in-One WP Migrationでインポート処理を実施した後で上記の症状が発生しました。

    なので02側の設定やプラグインがまずいのでは、とも感じています。

    トピック投稿者 masak0521

    (@masak0521)

    あと、下層側の「新着情報」をクリックすると親サイトの該当するidのニュースが表示されるため、やはりどこかで転送設定がおかしいのだと思うのですが・・・

    トピック投稿者 masak0521

    (@masak0521)

    プラグインを確認していったところ02の下層ページ側の「Redirection」というプラグインが下記エラーを吐いていました

    「REST API が 404 ページを返しています。これは外部プラグインまたはサーバー設定の問題である可能性が高くなります。」

    そして問題があるページ?として、親ページのソースらしきものを表示してきています。

    ただしこのプラグインを無効化しても症状は変わりませんでした・・・

    ちなみにこの「Redirection」は上位ページにも入っているのですが、こちらを無効化しても変化はありません。

    mokkosan

    (@mokkosan)

    02側を一旦削除して、もう一度、空のwordpressを入れてみてください。その時に、ダミーでいくつか投稿なり固定ページなり作って、パーマリンクの設定は本番に使うものにします。インポートではなく、手動で設定してみてください。その状態で正常に稼働したら、その状態の.htaccessをコピーして残しておいてください。

    その後、今度はインポートします。当然、稼働しなくなると思いますが、その時の.htaccessを、先にコピーしたものと比較してみてください。何か違う点はありますでしょうか?

    トピック投稿者 masak0521

    (@masak0521)

    返信ありがとうございます。

    一度削除して空を入れたところ、その段階では.htaccessが作成されませんでした(パーマリンクの設定、更新をしても出来なかったのでインストールが不完全なのでしょうか?)

    その後、All-in-One WP Migrationでインポートをしてみましたが、症状は変わらずです・・・

    「合わせる」という意味で02の.htccessを試しに削除してみましたが、こちらも変化はありませんでした。

14件の返信を表示中 - 1 - 14件目 (全14件中)

このトピックに返信するにはログインが必要です。