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

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

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

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

.htaccess

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

Q&A

解決済

1回答

582閲覧

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

j123

総合スコア15

WordPress

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

.htaccess

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

0グッド

0クリップ

投稿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

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

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

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

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

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

guest

回答1

0

ベストアンサー

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

総合スコア84555

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

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

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 のようになりますね。過去にそう書いた物がキャッシュされていたのでしょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問