エックスサーバーにてインストールしたWordpressにプラグイン「Custom Post Type UI」を使ってカスタム投稿を作成しています。
観光地紹介の記事になるので、カスタムフィールドを設定し、WP ALL IMPORTERを使ってCSVで記事を50件ほど流し込みました。一旦表示されるかを確認してから、流し込んだ記事にスラッグを設定していなかったことに気が付き、スラッグを設定してみたところ404 Not Foundで記事が表示されません。
Wordpressをインストールしたディレクトリの構造が少し特殊な状況のため、その影響なのか…と疑ってもいるのですが、ネットで見つけた対応策をやるだけやってみたのですがどうにならず…お知恵を貸していただければと思い投稿させていただきました。
Wordpressを入れたサーバーのディレクトリ構造
wordpressで構築されたサイトがルート直下で稼働しております。同一ドメインでサイトをリニューアルすることになり、リニューアル用の新しいWPを「public_html」の中に入れました。
public_html
└ .htaccess
└ index.php
└ wp ←現在はこのフォルダ内のwordpressがhttps://hogehoge.jp/として稼働中
└ cms ←このWPのパーマリンクがおかしくなっている
現在の状態
(1)パーマリンク設定
→ カスタム構造 https://hogehoge.jp/cms/%year%/%monthnum%/%day%/%post_id%/ に設定
通常のPOST → https://hogehoge.jp/cms/2021/10/30/70/ で表示される。スラッグを設定しても表示される。
カスタム投稿名を「custom」、タイトルを「テスト投稿」、スラッグを「test」とした記事
・https://hogehoge.jp/cms/custom/テスト投稿 → 表示される
・https://hogehoge.jp/cms/custom/test/ → 表示されない
(2)パーマリンク設定
→ 基本の https://hogehoge.jp/cms/?p=123 に設定
通常のPOST → https://hogehoge.jp/cms/?p=70 … 表示される
カスタム投稿 → https://hogehoge.jp/cms/?custom=test … 表示される
基本の形であれば表示されるようです。
試してみたこと
- パーマリンク設定を開き、特に何も触らずに「変更」ボタンを押す
→ 大体がこれで直るはずですが、改善されず。
- .htaccessの記述の見直しと更新。
下記のようになっており特におかしなところは見当たりませんでした。
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase /cms/ RewriteRule ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /cms/index.php [L] </IfModule>
- flush_rules関数を実行
functions.phpに下記を記述してサイトを更新してみました。特に改善されず。
global $wp_rewrite; $wp_rewrite->flush_rules();
- あとからスラッグをつけたから表示されないのか?と思い、カスタム投稿の記事を一旦すべて削除。CSVで最初からスラッグありの状態で新規登録
→ 新しく記事は生成されており、DBのguidも「https://hogehoge.jp/cms/custom/test/」とスラッグ入りのURLになっているが404 Not Foundのまま
- CSVを使わず、手動で作成した記事で試す
→ こちらもスラッグなし状態では表示されるものの、スラッグを入れると404エラー
出来る範囲のことはやったのですが一向に改善されず…お手上げ状態です。
おかしいのはカスタム投稿のみで、投稿や固定ページについては普通にスラッグが生きています。
(タクソノミーも作っていますが、そちらまではまだ確認していません)
サーバーでmod_rewriteが許可されているか確認しましょう、という旨の記事もwebでは出てきますが、エックスサーバーなので多分そこは普通に動くはずですし…
ルートディレクトリで稼働しているWPの影響なのでしょうか…
こちらについては私の方で作成したサイトではないため出来れば触らずにエラーの解消をしたいと考えています。
どうぞお力をお貸し頂ければ幸いです。
念のため、ルート直下に置いてあるhtaccessの中身も記載しておきます。
SetEnvIf Request_URI ".*" Ngx_Cache_NoCacheMode=off SetEnvIf Request_URI ".*" Ngx_Cache_StaticMode # Allow acces to wp-admin/admin-ajax.php <Files admin-ajax.php> Satisfy any Order allow,deny Allow from all </Files> <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} !on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </IfModule> <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^(.*)xmlrpc.php$ "http\://0.0.0.0/" [R=301,L] RewriteRule ^osusume/20503 /osusume/21220 [R=301,L] </IfModule> # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
宜しくお願いいたします!
回答1件
あなたの回答
tips
プレビュー