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

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

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

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

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

.htaccess

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

Q&A

解決済

2回答

1946閲覧

【.htaccess】/new/aaa.html を /news/aaa/ (aaaは固定ではなくどんな文字列でも良い)へリダイレクトさせる方法を教えて下さい。

junyabuki

総合スコア15

WordPress

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

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

.htaccess

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

0グッド

0クリップ

投稿2021/12/18 15:55

編集2021/12/19 14:53

前提・実現したいこと

ウェブサイトのリニューアルに伴い、.htaccessを使って
/new/aaa.html を /news/aaa/(index.phpは省略)
へリダイレクトさせたいと考えています。

aaaの部分は、決まったページではなく、
どんな文字列になっていても良いようにルール化したいのですが、
可能なものでしょうか?

###試してみたこと
下記の記述ですと、1つのページでしかルールが適用されません。

htaccess

1RewriteEngine on 2RewriteRule ^aaa.html$ https://www.example.com/aaa/ [L,R=301]

今回は、/new/ディレクトリ以下の全ページに適用させたいです。

htaccess

1RewriteRule ^new/(.*).html$ /news/$1/ [R=301] 2RewriteRule ^.*new/(.*).html$ /news/$1/ [R=301]

これらを試してみましたが、404ページに行ってしまいます。

補足情報

.htaccessのキャッシュを更新できるよう、Chromeの開発者ツールで
「キャッシュの削除とハード再読み込み」を使用して確認しています。

リニューアル後のサイトはWordpress(5.8.2)を利用しております。
上記のことを実現させるのに適したプラグイン等をご存知でしたら
.htaccessを直接書く方法ではなくても結構です。

追加情報

他の記述が干渉してしまっている可能性もあるため、全体を掲載します。
他にも変な記載になってしまっているところがありましたら
ご指摘いただけますと幸いです。

htaccess

1# BEGIN WordPress 2# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は 3# 動的に生成され、WordPress フィルターによってのみ修正が可能です。 4# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。 5<IfModule mod_rewrite.c> 6RewriteEngine On 7RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 8RewriteBase / 9RewriteRule ^index.php$ - [L] 10RewriteCond %{REQUEST_FILENAME} !-f 11RewriteCond %{REQUEST_FILENAME} !-d 12RewriteRule . /index.php [L] 13</IfModule> 14# END WordPress 15 16# BEGIN-HTACCESS 17# このBEGIN-ENDはヘテムルコントロールパネルから挿入されました。編集しないようにお願いします。 18AuthUserFile /aaa/bbb/ccc/.htpasswd 19AuthGroupFile /dev/null 20AuthName "please input ID/PW" 21AuthType Basic 22require valid-user 23# END-HTACCESS 24 25#追加ここから 26<IfModule mod_rewrite.c> 27RewriteEngine on 28RewriteBase / 29 30#index.html/phpのありからなしへ統一 31RewriteCond %{REQUEST_URI} ^.*/index.(html|php)$ 32RewriteRule ^(.*)index.(html|php)$ https://%{HTTP_HOST}/$1 [R=301] 33 34#httpからのアクセスをhttpsに統一 35RewriteCond %{HTTPS} off 36RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301] 37 38#wwwなしをありに統一 39RewriteCond %{HTTP_HOST} !^www. [NC] 40RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301] 41 42#/products/から/products-list/へのリダイレクト 43RewriteRule ^(.*)products/$ https://%{HTTP_HOST}/products-list/ [R=301] 44 45#/new/aaa.htmlから/news/aaa/へのリダイレクトテスト 46RewriteRule ^new/(.*).html$ /news/$1/ [R=301] 47RewriteRule ^new/(.*).html$ https://%{HTTP_HOST}/news/$1/ [R=301] 48RewriteRule ^.*new/(.*).html$ /news/$1/ [R=301] 49RewriteRule ^.*new/(.*).html$ https://%{HTTP_HOST}/news/$1/ [R=301] 50</IfModule> 51#追加ここまで 52

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

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

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

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

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

CHERRY

2021/12/19 11:41

うまくいかないということですが、.htaccess に他の Redirect や RewriteRule の記載はないでしょうか。 他の条件と重なっていて、そちらの条件が優先されているということはないでしょうか。
junyabuki

2021/12/19 11:52

ご回答頂き、誠にありがとうございます。 htaccessに追加した行をすべて掲載しました。 ご確認いただけますと幸いです。
guest

回答2

0

自己解決

たくさんご質問させていただきありがとうございました。
色々試してみましたところ、何故かはわかりませんがサーバー上にディレクトリとして存在していないURLからではリダイレクトが効かない事がわかりました。
Wordpressでは sample.com/bbb/ というURLでページが表示されるとしても、「bbb」というディレクトリが存在するわけではないことがありますが、その場合はリダイレクトが効かないようです。
または、異なる階層を参照してしまうとか、そんな気がします。

もう少し調査してみて、また分からなかったら質問させていただきたいと思います。
ありがとうございました。

投稿2021/12/19 15:49

junyabuki

総合スコア15

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

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

KazuhiroHatano

2021/12/20 03:10

otnさんがコメントで > 追加は、Wordpress分の下にじゃなくて、上にしないと駄目です。 って書いてくれてるんですが、そこは試しましたか? WordPressは.htaccessで 「存在しないファイルやディレクトリへのアクセスは全部index.phpに投げてリライト処理終了」 というようなことをしてます 自前のリライトを追加するならこれより前にしないとダメです
guest

0

/new/aaa.html を /news/aaa/(index.phpは省略)

へリダイレクトさせたいと考えています。

ということだと、

Apache

1RewriteEngine on 2RewriteRule ^new/(.*).html$ /news/$1/ [R=301]

投稿2021/12/19 10:48

otn

総合スコア85901

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

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

junyabuki

2021/12/19 12:38 編集

ご回答、誠にありがとうございます。 教えていただいたとおりに設定してみましたが、期待した動きにはなりませんでした。。。 /new/aaa.htmlが存在しないため、404ページが表示されてしまうのが原因ではないかと思い始めました。404リダイレクトの設定は.htaccessには記述しておらず、Wordpressでは404.phpを配置することで自動的にリダイレクトしています。 アドバイスいただけますと幸いです。
otn

2021/12/19 12:33

> 期待した動きにはなりませんでした。。。 それでは情報量がほぼゼロです。 どういうURLに対して、どういう結果になったのでしょう?
junyabuki

2021/12/19 12:57

分かりにくい説明で申し訳ございませんでした。 /new/aaa.html が /news/aaa/ にリダイレクトされず、404ページに行ってしまうのが現状です。 ただ、存在するページでも試してみましたがリダイレクトされなかったため、書き方や他の記述との干渉が原因かもしれません。
otn

2021/12/19 13:02

> 404ページに行ってしまうのが現状です。 そのときのアドレスバーの内容は何でしょうか?
otn

2021/12/19 13:17

ということは、wwwを付けるというリダイレクトも含め、リダイレクトが全く効いてないようですね。 .htaccess が効いてないと言うことでしょう。 .htaccessにでたらめな内容を書くと、 500 Internal Server Error になりますか?
junyabuki

2021/12/19 13:35

すみません。先ほどの回答に誤りがあり、正しくは https://www.sample.com/new/aaa.html でした。 今回質問させていただいている部分以外は動作しております。。
otn

2021/12/19 14:08

実際に動いている.htaccessと質問文の記載が違うとかですかね。
junyabuki

2021/12/19 15:00

Wordpressとサーバー側で生成された行もあわせて掲載させていただきました。 (その他、少し書き換えていますが未だ動きません)
otn

2021/12/19 16:07

やっぱり、まだまだリライトがありましたか。 追加は、Wordpress分の下にじゃなくて、上にしないと駄目です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問