質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.35%

  • WordPress

    7640questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • Linux

    4025questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • VPS

    368questions

    VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

wordpressの下層のみ404になってしまう。

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 315

yosuke_ir

score 2

 前提・実現したいこと

ワードプレスの下層ページが404エラーになってしまいました。
トップページは問題なく表示されています。

経緯として
元々下層ページは表示されていたのですが
URLに「http://hogehoge/index.php/xxx/」
とindex.phpが挟まってしまう問題を解決すべく
パーマリンクをindex.phpなしに変更したところ、404エラーになってしまいました。

パーマリンクをindex.phpを挟んでいる状態に戻すと問題なく表示されます。

目的としては「http://hogehoge/xxx/」
という状態で下層ページを表示させたいです。

 発生している問題・エラーメッセージ

Not Found
The requested URL /xxx/ was not found on this server.

 試したこと

ネットで調べたところ近い現象のものはいくつか見つかり試したのですが、
どれもうまくいきませんでした。

■ 「.htaccess」に問題ないか確認

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

wordpressはドキュメントルートにインストールしているので
上記の記載で問題ないと判断しました。

■「mod_rewrite」が動作しているか確認
「phpinfo();」で「mod_rewrite」があることを確認できましたので
動作はしていると判断しました。

■「httpd.conf」を下記のように変更しました。
(変更前)AllowOverride None
(変更前)AllowOverride All

 補足情報(FW/ツールのバージョンなど)

【サーバー】さくらのVPS
【OS】CentOS Linux release 7.5.1804 (Core)
【Apache】Apache/2.4.6 (CentOS)
【php】PHP Version 7.1.20

・wordpressはドキュメントルートディレクトリにインストールしています。

 追加補足

httpd.confの設定状況

DocumentRoot "/var/www/html"
  <Directory "/var/www">
    # AllowOverride None
    AllowOverride All
    # Allow open access:
    Require all granted
</Directory>

現状の.htaccessの記載情報

 # 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]
RewriteCond %{REQUEST_URI}  /.*
RewriteCond %{REQUEST_URI} !^/index\.php
RewriteRule .*  /index.php%{REQUEST_URI} [P,L]
</IfModule>
 # END WordPress

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

 http://www.example.com/index.php/xxx/というリクエストを200で返してくれるということであれば以下のRewriteRuleを追加すればよいかと。

RewriteCond %{REQUEST_URI}  /.*
RewriteCond %{REQUEST_URI} !^/index\.php
RewriteRule .*  /index.php%{REQUEST_URI} [P,L]

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/26 13:31

    回答ありがとうございます。

    勉強不足で大変恐縮な質問なのですが
    記載する場所は「.htaccess」の下記★部分で良いでしょうか?
    ーーーーーーーーーーーーーーーーーーーー
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    ★★★★★★★★
    </IfModule>
    ーーーーーーーーーーーーーーーーーーーーー

    またもしご存知でしたらご教示いただきたいのですが
    wordpressの仕様でパーマリンクの設定を変更すると
    「.htaccess」が自動で書き換えられてしまうようです。
    こちらの対策は何かございませんでしょうか?

    キャンセル

  • 2018/07/26 13:39

    試していませんが、その場所でいいかと。
    WorkPressの仕様については存じ上げませんので、.htaccessの上書きうんぬんについてはわかりません。
    Apacheの設定で分散設定ファイル(defaultでは.htaccess) を複数設定することができます。
    https://httpd.apache.org/docs/2.2/ja/mod/core.html#accessfilename

    このあたりを参照して、トライしてみてください。

    キャンセル

  • 2018/07/26 13:42

    ありがとうございます。試してみます。

    キャンセル

  • 2018/07/27 02:56

    上記記載の方法で進めてみましたが、状況に変化がありませんでした。
    念のためapache再起動、サーバー再起動、そしてキャッシュの問題かと
    別のブラウザでも試してみましたがダメでした。

    問題点として
    「.htaccess」の修正内容や箇所が間違っているのか
    「.htaccess」の修正が何らかの原因で反映されていないのか
    どちらの可能性が高そうでしょうか?

    度々の質問で大変申し訳ありません。
    ※原因解明のために、補足にて現状の設定状況をより詳しく記載しておきます。

    キャンセル

  • 2018/07/27 03:22

    失礼しました!解決しました!
    補足に記載したhttpd.confの設定箇所が間違っていたようです。
    /var/www
    のディレクトリの設定をしてしまっておりました。
    /var/www/html
    のディレクトリの設定をし直したところ、解決しました。
    ありがとうございました。

    キャンセル

同じタグがついた質問を見る

  • WordPress

    7640questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • Linux

    4025questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • VPS

    368questions

    VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。