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

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

新規登録して質問してみよう
ただいま回答率
86.12%
WordPress

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

.htaccess

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

解決済

WordPressの .htaccessにリダイレクトの記述を追加しても、リダイレクトが効かない

j123
j123

総合スコア15

WordPress

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

.htaccess

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

1回答

0グッド

0クリップ

209閲覧

投稿2022/11/26 16:53

WordPressの .htaccessにリダイレクトの記述を追加しても、リダイレクトが効かない

やりたいこと

・.htaccessにて「.html」がないURLに統一(リダイレクト)したい。

WordPressの固定ページを、
今までは「.html」をつけたURLにて運用していたのですが(プラグイン:.html on PAGES にて)、
「.html」を削除した運用に変更するため、
プラグインを無効化し、.htmlがないURLに変更は完了しました。

ですが検索ででてくるURLは「.html」がついているものがインデックスされているため、
.htaccessに以下の記述を追加し、リダイレクトされるようにしたいのですが、
全くリダイレクトされてくれません。

記載したコード

RewriteEngine on # ----------[.html]あり→なしにリダイレクトする記述---------- RewriteRule ^aaa.html$ https://〇〇.jp/aaa/ [R=301,L] RewriteRule ^(.*).html$ $1 [R=301,L] RewriteRule https://〇〇.jp/about.html https://〇〇.jp/aaa/ [R=301,L]

このどれを試しても、

https://〇〇.jp/%5e/aaa [R=301,L]

と表示され、404ページへと移動してしまいます。

ちなみに、これ以外のリダイレクト記述(.htmlをとる記述以外)は問題なくリダイレクトされてくれています。

念のため、この記述の上にある記述も記載しておきます。

RewriteEngine on # ----------URLの正規化:[www]なしで統一する記述---------- RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,L] # ----------[http] から [https] にリダイレクトする記述---------- RewriteCond %{HTTPS} !on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] # ----------[.html]あり→なしにリダイレクトする記述---------- RewriteRule ^(.*).html$ $1 [R=301,L] RewriteRule ^aaa.html$ https://〇〇.jp/aaa/ [R=301,L] RewriteRule https://〇〇.jp/about.html https://〇〇.jp/aaa/ [R=301,L]

何がダメなのでしょうか?

お分かりの方、教えていただければ幸いです。
よろしくお願いいたします。

補足情報

WordPress バージョン:5.8.2
サーバー:XSERVER
PHP バージョン:7.4.25

以下のような質問にはグッドを送りましょう

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

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

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

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

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

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

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

適切な質問に修正を依頼しましょう。

回答1

1

ベストアンサー

https://~~~/aaa.htmlhttps://~~~/aaa にリダイレクトしたいのでしょうか?https://~~~/aaa/でしょうか?
前者なら、
RewriteRule (.*)\.html$ /$1 [R=301,L]
後者なら、
RewriteRule (.*)\.html$ /$1/ [R=301,L]
です。

/%5e/aaa

のようになる原因は、お書きの範囲にはありません。他のRewrite~~の記述が無いとするとPHP側の問題でしょうか。
あるいは、R=301にしちゃってるので、過去に間違った設定をした際にブラウザ側にキャッシュされているのかも知れません。
ブラウザでなくcurlコマンドで、curl https://~~~/aaa.htmlで確認してみましょう。

R=301だと「何を何にリダイレクトするか」をブラウザが保存するはずなので、記憶されると、その後にサーバー側でリダイレクト設定を変更しても反映されませんよ。

投稿2022/11/27 10:26

otn

総合スコア80401

j123❤️を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

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

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

このような回答には修正を依頼しましょう。

回答へのコメント

j123

2022/11/27 14:30

otnさん、 ありがとうございます! 後者希望でしたので、 >RewriteRule (.*)\.html$ /$1/ [R=301,L] で無事リダイレクトされてくれました! 微妙に全部的を外して記載してしまっていたようですね。。 色々質問後も試したり調べていたのですが、 なぜかうまくいかずでしたので、 大変助かりました。。 ありがとうございます! >過去に間違った設定をした際にブラウザ側にキャッシュされているのかも知れません。 これもあり、色々他にも試していたのですが、 全てがダメだったのかもしれませんね。。 ちなみに >/%5e/aaa この件は、 キャッシュのクリアは最初の段階で何度か行っていたのですが、全く変化はなく、 WP Fastest Cashe のプラグインを停止し、キャッシュのクリアもしたのですが、 うまくいきませんでした。。 ただ、キャッシュだけでなく、cookieも削除したところ、 改善された?ようですので、cookieも関係している、ということでしょうか? (あまり違いがわかっていませんので、キャッシュだけでなんとかなるといつも思ってまして。。) あと、 >ブラウザでなくcurlコマンドで、curl https://~~~/aaa.htmlで確認してみましょう。 これについて、 ちらっと調べる限り、PC内(当方Mac環境です)にcurlという機能?を入れ、 ターミナルで操作するといった感じのようですが、 ブラウザについているチェック機能を、 直接Macでも使えるようにする?といった感じでしょうか? フロントエンドはわかるのですが、バックエンドが詳しくなく、、、 できれば今後のためにもこういう別のチェック方法も知っておきたいのですが、 バックエンドの知識が乏しくても使える感じでしょうか? それともある程度知識は必要なものでしょうか? よろしくお願いいたします!
otn

2022/11/27 14:49

/aaa.html => /aaa/ の1パターンであれば、 RewriteRule ^aaa.html$ https://〇〇.jp/aaa/ [R=301,L] で良いはずなのですが、これが https://〇〇.jp/%5e/aaa となるのは理解できません。 RewriteRule ^(.*).html$ $1 [R=301,L] のように、RewriteRuleのリダイレクト先を相対パスで書いた時は、RewriteBaseで指定したパスからの相対パスになり、RewriteBaseが無い時は、ファイルパスそのままになります。 つまり、この場合だと、RewriteBaseが無いので、 https://〇〇.jp/var/www/html/aaa のようになるはずなのですが、何故 %5e になったのかこれも理解できません。 > キャッシュのクリアは最初の段階で何度か行っていたのですが、 301リダイレクトのキャッシュがどこに記憶されるかをググってみると、普通のブラウザキャッシュの中のようなのでキャッシュクリアーで行けるはずです。cookieは関係ないです。そもそもテスト中は301にしなければ良いだけなのですが。 > PC内(当方Mac環境です)にcurlという機能?を入れ、ターミナルで操作するといった感じのようですが、 そうです。指定したURLの内容を端末に表示するコマンドです。リダイレクトの場合はリダイレクト先が表示されます。 Macだと最初から入ってないのでしょうか?
j123

2022/11/28 02:32

otoさん、 ご返答ありがとうございます! 諸々、記述の細かいミスが多々あったということですね。。 きちんとまとめて、次回以降、間違わずリダイレクトできるようにしたいと思います。 ありがとうございます! >何故 %5e になったのかこれも理解できません。 こちらに関しては、 「%5e」を調べてみると、 「%5e」は「^」がエンコードされたもの、ということだったので、 「^」が原因と思い、とってみたりもしたのですが、 うまくいかず。。。ということで質問させていただいた次第です。 ですが、キャッシュがうまくクリアできていなかった? のか、その辺はこちらも判別できないのですが、 ブラウザ(Mac Chrome)のキャッシュクリアだけでは改善されず、 「Cookieと他のサイトデータ」を削除後は改善していたため、 合わせて質問させていただいた次第です。 ただ、 >普通のブラウザキャッシュの中のようなのでキャッシュクリアーで行けるはずです。cookieは関係ないです。 ということですので、 何かしらのトラブルがブラウザ内にあったのかも?ということですよね。 とりあえずキャッシュクリアだけでいける、ということも教えていただけたので、 今後こういうトラブルがあれば、まずはキャッシュクリア、 あと間違いのない記述をしっかり書いて試したいと思います。 curlについては、 >Macだと最初から入ってないのでしょうか? ターミナルなので、わからないままいじるのは少々こわかったので、 色々検索してみたところ「Macにcurlをインストールする」という記事に辿り着いたため、 インストールしないと使えないものなのか。。と思い、 確認させていただいたのですが、 >curl https://~~~/aaa.htmlで確認してみましょう。 このままコマンドをうつと、 htmlの記述がでてきて、 〜〜 <h1>Moved Permanently</h1> <p>The document has moved <a href="https://〇〇/about/">here</a>.</p> </body></html> と無事確認することができました。 ということで、最初から入っていたようです。 先に試してみるべきでしたね。。 失礼しました。 「%5e」の件については少々謎を残してしまいましたが、 とりあえず教えていただいた記述でリダイレクトもでき、 新たな「curl」で確認する、という方法も教えていただけたので、 大変助かり、そして勉強になりました。 ありがとうございました!
otn

2022/11/28 10:37

> 今後こういうトラブルがあれば、まずはキャッシュクリア、 そもそも、試行錯誤中で最終確定でないのであれば、キャッシュされないよう301でなくデフォルトの302にするのが良いやり方です。 RewriteBase /^ と書いて、リダイレクト先を相対パスで書くと、 https://〇〇.jp/%5e/aaa のようになりますね。過去にそう書いた物がキャッシュされていたのでしょう。

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

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

WordPress

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

.htaccess

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