サブディレクトリにインストールしたページがエラーに
-
www.site.comのwordpressサイトを運用している配下にwww.site.con/02のような形でふたつめのワードプレスをインストールしたところ、トップページ以外はwww.site.comの配下とみなされ404エラーとなってしまいます(マルチサイト化はしておりません)。02はそれまで他ドメインで運用していたサイトとなります
02サイトをインストールした空の状態では問題なく遷移していたのですが、サイトデータをAll-in-One WP Migrationでインポートした際に表示できなくなったので、インポートデータの設定にどこか問題があるのかもしれません
パーマリンク設定の空更新や
.htaccessの記載などネットの情報を元に色々試してみたのですが、改善されませんでしたトップページは表示されているのでDBなどの問題ではないと思うのですが・・・
チェックすべき点などありましたらご教授いただきたく存じます。
-
設定>一般のWordPress アドレス (URL)とサイトアドレス (URL)は現在のもの (https://www.site.com/02) になっていますか?また、
.htaccessの中身 (上位ディレクトリと/02/の両方) を貼っていただくと、具体的なアドバイスが得られるかもしれません。ご返信ありがとうございます。
設定-一般のアドレスは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が編集しました。理由: コードブロックの適切な使用
バックアップを取り、上位の
.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/以下のアクセスが親サイト側にリダイレクトされたり、親サイトのリライトルールで上書きされたりすることがなくなります。反映されなければ、
パーマリンク設定の空更新
をお試しください。
ありがとうございます。
ただ上記のようにhtaccessを更新してみましたが、状態は変わらずでした・・・転送系のプラグインが干渉している気もするのですが、そのあたりのプラグインを無効にしても変化はありませんでした・・・
サーバーキャッシュ・ブラウザキャッシュの影響はどうでしょうか?
通常、そのような運用(ルート直下とサブディレクトリの両方に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ディレクトリをキャッシュの対象から外してキャッシュを再構築しましょう。
あ、そういえば、ここから4つ上のことりさんのレスで、「パーマリンク設定の空更新」を行うようにアドバイスくださっていますが、その次のmasak0521さんのレスでは、.htaccessの変更はしたことが書いてありますが、パーマリンクの空更新はやったのかどうか書いてません。そちらはどのようになりましたでしょうか?一応、あとから読む人のためにもはっきり明記くださると幸いです。
詳しくありがとうございます。
サーバはApacheで、データベースも分けています。htaccessの更新後にパーマリンクの空更新も実施いたしました。
AllowOverride、mod_rewrite も設定されていると思います(若干自信が無いですが・・・)
最初の投稿でも書いたのですが、下層02に空のWordpressを入れた段階では問題なかったものがAll-in-One WP Migrationでインポート処理を実施した後で上記の症状が発生しました。
なので02側の設定やプラグインがまずいのでは、とも感じています。
あと、下層側の「新着情報」をクリックすると親サイトの該当するidのニュースが表示されるため、やはりどこかで転送設定がおかしいのだと思うのですが・・・
プラグインを確認していったところ02の下層ページ側の「Redirection」というプラグインが下記エラーを吐いていました
「REST API が 404 ページを返しています。これは外部プラグインまたはサーバー設定の問題である可能性が高くなります。」
そして問題があるページ?として、親ページのソースらしきものを表示してきています。
ただしこのプラグインを無効化しても症状は変わりませんでした・・・
ちなみにこの「Redirection」は上位ページにも入っているのですが、こちらを無効化しても変化はありません。
02側を一旦削除して、もう一度、空のwordpressを入れてみてください。その時に、ダミーでいくつか投稿なり固定ページなり作って、パーマリンクの設定は本番に使うものにします。インポートではなく、手動で設定してみてください。その状態で正常に稼働したら、その状態の.htaccessをコピーして残しておいてください。
その後、今度はインポートします。当然、稼働しなくなると思いますが、その時の.htaccessを、先にコピーしたものと比較してみてください。何か違う点はありますでしょうか?
-
この返信は3ヶ月前に
このトピックに返信するにはログインが必要です。