🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
mod_rewrite

ApacheウェブサーバーのためのURL書き換えモジュールです。主にプリティーURLに使われていますが、同様に単純置換を超えた、多様なタスクの処理能力や柔軟性があります。

WordPress

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

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

Q&A

解決済

3回答

5221閲覧

パーマリンクを変更すると404エラーが出てしまいます。

senhiro123

総合スコア6

mod_rewrite

ApacheウェブサーバーのためのURL書き換えモジュールです。主にプリティーURLに使われていますが、同様に単純置換を超えた、多様なタスクの処理能力や柔軟性があります。

WordPress

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

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

0グッド

1クリップ

投稿2019/07/25 06:42

編集2019/07/25 06:46

前提・実現したいこと

WordPressの固定ページでパーマリンクを自由に変更したいです。

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

固定ページでパーマリンクを変更すると404エラーでページが表示されません。 .htaccessを変更してもエラーが解決しないので教えていただけないでしょうか。

該当のソースコード

RewriteEngine on #RewriteBase / #ドメインの統一 #RewriteCond %{HTTP_HOST} ^(www.XXXXXXXXXX.com)(:80)? [NC] #RewriteRule ^(.*)$ https://www.XXXXXXXXXX.com/$1 [R=301,L] RewriteCond %{HTTPS} off RewriteCond %{REQUEST_URI} !(^/.well-known/) RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] RewriteEngine off

試したこと

RewriteEngine on #RewriteBase /%category%/%postname% #ドメインの統一 #RewriteCond %{HTTP_HOST} ^(www.XXXXXXXXXX.com)(:80)? [NC] #RewriteRule ^(.*)$ https://www.XXXXXXXXXX.com/$1 [R=301,L] RewriteCond %{HTTPS} off RewriteCond %{REQUEST_URI} !(^/.well-known/) RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] RewriteRule ./%category%/%postname% /index.php [L] RewriteEngine off

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

ここにより詳細な情報を記載してください。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yukikp

2019/07/25 07:19

・元のパーマリンクは何だったのか。 ・新しいパーマリンクはどのように変更したのか。 ・管理画面>設定>パーマリンク設定では、どのような設定になっているのか について教えてもらえますか? ついでながら、その.htaccessの書き方は何を見てそのように書いたのか教えてもらえるとありがたいです。
senhiro123

2019/07/25 07:40 編集

・元のパーマリンク →基本設定(?p=123のような感じです) ・新しいパーマリンク →カスタム構造(ドメイン以下は空白)に設定したのち、固定ページのパーマリンクを編集して「contact」と入力しました。 ・管理画面>設定>パーマリンク設定 →現状は基本設定に戻しています。カスタム構造に変更しドメイン以下に「%postname%」や「%category%/%postname%」と入力して保存したのちパーマリンクを編集したり色々試してみましたが404エラーになりました。 ・.htaccessの書き方 →こちらのサイトを見ながら.htaccessの内容を変更してみたのですがダメでした。 https://yoneyonekun.com/blog/permalink
yukikp

2019/07/25 07:55

(1)管理画面>設定>パーマリンク設定を開いた状態でのまま、FTPクライアントを使って.htaccessをhtaccess.txtのようにリネーム (2)管理画面>設定>パーマリンク設定で、投稿名を選択して保存 (3)固定ページのパーマリンクを編集して「contact」と入力して記事を保存 これで観れませんか?
senhiro123

2019/07/25 08:08

やってみましたがやはり404エラーが出てしまいます。 「.htaccessをhtaccess.txtのようにリネーム」とは「htaccess」という名前のテキストファイルに変更するということでしょうか?
yukikp

2019/07/25 08:49

>「.htaccessをhtaccess.txtのようにリネーム」とは「htaccess」という名前のテキストファイルに変更するということでしょうか? そういう事です。色々書かれた.htaccessファイルを無効化するため、名前を変更してくださいというお願いでした。
CHERRY

2019/07/25 14:25

パーマリンクを変更するだけであれば、「.htaccess」を変更する必要はないと思いますので、まずは、「.htaccess」を元に戻してください。 ---- 状況の確認ですが... WordPress の管理画面の設定で、「パーマリンク設定」は、「投稿名」に設定しているのでしょうか? その上で、固定ページに 「contact」とスラッグをつけた場合に http://example.com/contact の URL をウェブブラウザで開くと 404エラーになるということでしょうか?
senhiro123

2019/07/26 01:18

>yukikp様 ありがとうございます。「色々書かれた.htaccessファイルを無効化するため、名前を変更してくださいというお願いでした。」この通りやってみましたがやはりダメでした。
senhiro123

2019/07/26 01:50 編集

>CHERRY様 かしこまりました。一度元に戻してみます。 “WordPress の管理画面の設定で、「パーマリンク設定」は、「投稿名」に設定しているのでしょうか? その上で、固定ページに 「contact」とスラッグをつけた場合に http://example.com/contact の URL をウェブブラウザで開くと 404エラーになるということでしょうか?” →現状は基本設定に戻しています。ちなみに投稿名に設定すると「http://example.com/お問い合わせ」になるのですが、そのまま表示させても404エラーが出てしまいます。「http://example.com/contact」に変更しても404エラーが出ます。
yukikp

2019/07/26 03:20

ちなみに、どちらのサーバーをご利用でしょうか。
senhiro123

2019/07/26 03:36

>yukikp様 conohaサーバーを使用しています。
yukikp

2019/07/26 03:38 編集

conohaでnginxをウェブサーバーとして使っていませんか? と思ったのだけど、そんなことないですよね。
yukikp

2019/07/26 04:01 編集

ただ今、conohaでリザーブド 1GBのプランをレンタルし、Conohaのコントロールパネル>サイト管理>アプリケーションインストールでWordPressをインストールしてみましたが、普通に固定ページでパーマリンクの変更ができました。 プラグインをすべて外して、テーマをデフォルト(WordPressがインストールされた時点でついているテーマ)にもどして同じようにパーマリンクを変更したらどうなりますか?
senhiro123

2019/07/29 01:53

お手数をおかけして申し訳ありません。ありがとうございます。 >プラグインをすべて外して、テーマをデフォルト(WordPressがインストールされた時点でついているテーマ)にもどして同じようにパーマリンクを変更したらどうなりますか? 会社のホームページを直接編集しているため さすがにここまでは試せないのですが、もう少し頑張ってみます。 ありがとうございます。
guest

回答3

0

カスタムパーマリンクを使う場合の記述

# 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

が質問の.htaccessの中にないようですが削除されましたか??または最初から記述されていなかったのでしょうか??

うろ覚えで申し訳ないですがこの記述がないと基本のパーマリンク(?p=123)以外は使えなくなってしまうと思うのですが・・・。

投稿2019/07/26 14:29

momosiri

総合スコア1509

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

senhiro123

2019/07/29 01:57

同じディレクトリに.htaccessと.htaccess.backという2つのファイルが入っており .htaccess.backの方には次のような記述があります。 RewriteEngine on RewriteBase / RewriteRule ^index.php$ – [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ./index.php [L] RewriteEngine off <IfModule mod_rewrite.c></IfModule>に関しては記述がありませんでした。
momosiri

2019/07/29 07:40

.bakに入っている記述は元々あったものです(.bakはバックアップの意)ので、あったコードを.hatccessへコピーするか、一旦今の.htaccessをhtaccess.txtなどへ変更し、.htaccess.backを.htaccessにしてください。※いずれのファイルも削除はしないでください。また、いろいろな記述を追加等されているようですので後者の方法の方が個人的にはおすすめですが、プラグインなどでこのファイルに何かを追加するものがありますので何とも言えません。
senhiro123

2019/08/02 06:47

お返事が遅くなり申し訳ありません。 >一旦今の.htaccessをhtaccess.txtなどへ変更し、.htaccess.backを.htaccessにしてください 教えていただいたとおりやってみましたがやはり404エラーが出てしまいます。 リダイレクト系のプラグインの導入も検討してみます。
guest

0

自己解決

回答いただいた皆さまありがとうございました。
結局原因は以下の2つでした。

①パーマリンクを自由入力する際に/(スラッシュ)を最後に入れ忘れていた。
②.htaccessに記載するモジュールのルールが間違っていた。

②に関しては以下に変更することでパーマリンクを変更しても404エラーが出なくなりました。
色々調べていると# BEGIN WordPress~# END WordPressの中ではなく外に書くことで
WordPress更新の影響を受けないようです。

RewriteEngine On RewriteCond %{HTTPS} off RewriteCond %{REQUEST_URI} !(^/.well-known/) RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] # BEGIN WordPress # END 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>

無事に解決できて本当に助かりました。
ありがとうございます。

投稿2019/09/12 06:14

senhiro123

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ローカル環境での対処なら経験あるので
3パターン書いておきます。

【パターン1】
.htaccessと
トップディレクトリのパーミッション変更
(作業後に戻すのをお忘れなく)

【パターン2】
/etc/httpd/conf/httpd.confの設定

LoadModule systemd_module modules/mod_systemd.so <Directory "/var/www/html"> #.hataccessに関係するパス AllowOverride All </Directory>

【パターン3】
.htaccessにサブディレクトリの記述は不要

RewriteRule . /index.php [L]

本番環境でパーマリンクは初期設定の段階で決めて以降変更した事無いので、
同じ対処で解決するか分かりません。
見当違いでしたらすみません。

バックアップ取ってからお願いします。

あと、
リダイレクトで対処するプラグインもあったような気がします。

追記です

参考サイトもありますので、確認してみてください

・パーミッションを何から何へ変更するのでしょうか。

現在のパーミッションを確認して下さい。
私はローカル環境だったので細かい事は考えずに777に変更しました。
777にするならば、作業後に元のパーミッションに戻してください。
WordPressの理想的なパーミッション設定は?権限を見直してセキュリティ強化しよう

・.htaccessには「RewriteRule . /index.php [L]」の1行だけ書けばいいのでしょうか。

現在の数行を1行だけにするのではなく、該当の1行だけを変更してください。

RewriteRule ./%category%/%postname% /index.php [L] ↓ RewriteRule . /index.php [L]

今さら人に聞けない!WordPressで使われているmod_rewriteの説明書

投稿2019/07/25 14:35

編集2019/07/26 05:08
akihiro3

総合スコア955

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

senhiro123

2019/07/26 03:39

回答ありがとうございます。 質問ですが、 ・パーミッションを何から何へ変更するのでしょうか。 ・.htaccessには「RewriteRule . /index.php [L]」の1行だけ書けばいいのでしょうか。 初歩的な質問で申し訳ありません。
akihiro3

2019/07/26 05:08

追記しました。 参考サイトもありますので確認してみてください。
senhiro123

2019/07/29 01:38

ありがとうございます。 追記していただいた内容を参考にパターン1~3まですべて試してみましたがやはりダメでした。
akihiro3

2019/07/29 23:31

プラグインを選択肢に入れてみてもいいかもしれませんね。 お力になれず、すみません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問