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

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

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

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

リダイレクト

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

.htaccess

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

Q&A

解決済

2回答

5375閲覧

index.htmlなしリダイレクトが効かない

teraota27

総合スコア27

WordPress

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

リダイレクト

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

.htaccess

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

0グッド

0クリップ

投稿2019/07/16 04:00

編集2019/07/16 04:02

前提・実現したいこと

htmlで作成されていたサイトをリニューアルを機にwordpressで作り直しました。

https://www.●●●.jp/index.html
にアクセスされたときに
https://www.●●●.jp/
にリダイレクトさせたいと思っています。

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

知識がないので色んなサイトを参考に.htaccessファイルにリダイレクトの記述をしましたが効きません。
404エラーになります。

同時にwwwありで統一する記述もしましたが、そちらの方は正しく動作しました。

該当のソースコード

別の製作者が.htaccessに色々書いていたのですが一番最後に以下の記述を追記しました。(一応URLは伏せます。)

RewriteEngine on RewriteCond %{HTTP_HOST} ^●●●.com RewriteRule (.*) https://www.●●●.jp/$1 [R=301,L] RewriteCond %{THE_REQUEST} ^.*/index.html RewriteRule ^(.*)index.html$ https://www.●●●.jp/$1 [R=301,L]

何か書き方が間違っていますでしょうか..?

補足情報

念の為、.htaccess全体の記述を記載します。
「# redirect」からが今回追記した分です。別の製作者どういった意図で「# redirect」より上部を記述しているのかもよく分かっていません。。

# 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 # BEGIN Browser Cache <ifModule mod_expires.c> ExpiresActive On ExpiresByType image/jpg "access plus 1 month" ExpiresByType image/gif "access plus 1 month" ExpiresByType image/jpeg "access plus 1 month" ExpiresByType image/png "access plus 1 month" ExpiresByType text/css "access plus 1 month" ExpiresByType text/javascript "access plus 1 month" ExpiresByType application/javascript "access plus 1 month" ExpiresByType application/x-shockwave-flash "access plus 1 month" ExpiresByType text/css "now plus 1 month" ExpiresByType image/ico "access plus 1 month" ExpiresByType image/x-icon "access plus 1 month" </ifModule> # END Browser Cache <IfModule mod_deflate.c> # Insert filters AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/x-httpd-php AddOutputFilterByType DEFLATE application/x-httpd-fastphp AddOutputFilterByType DEFLATE image/svg+xml # Drop problematic browsers BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4.0[678] no-gzip BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html # Make sure proxies don't deliver the wrong content Header append Vary User-Agent env=!dont-vary </IfModule> # redirect RewriteEngine on RewriteCond %{HTTP_HOST} ^●●●.com RewriteRule (.*) https://www.●●●.jp/$1 [R=301,L] RewriteCond %{THE_REQUEST} ^.*/index.html RewriteRule ^(.*)index.html$ https://www.●●●.jp/$1 [R=301,L]

アドバイスよろしくお願いします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

先に、RewriteRule . /index.php [L]が該当して、[L]が付いているので、以降スキップされます。

先頭と末尾のリライト定義の順番を入れ替えて、無意味な行を削って、こんな感じで。

Apache

1RewriteEngine On 2RewriteBase / 3RewriteCond %{HTTP_HOST} ^example.com$ 4RewriteRule (.*) https://www.example.jp/$1 [R=301,L] 5RewriteRule (.*)index.html$ https://www.example.jp/$1 [R=301,L] 6RewriteRule ^index.php$ - [L] 7RewriteCond %{REQUEST_FILENAME} !-f 8RewriteCond %{REQUEST_FILENAME} !-d 9RewriteRule .* /index.php [L]

投稿2019/07/16 13:06

otn

総合スコア84505

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

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

teraota27

2019/07/17 00:37

上記の記述で正しく動作しました!助かりました。ありがとうございます! 因みになのですが、ついでに http→https のリダイレクトもしようと下記のように追記したのですが真っ白の画面に英語のエラーメッセージが表示されてしましたした。記述場所、記述方法が間違っているのでしょうか、、? 続けて申し訳ありません。 ------ RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^example.jp$ RewriteRule (.*) https://www.example.jp/$1 [R=301,L] RewriteRule (.*)index.html$ https://www.example.jp/$1 [R=301,L] RewriteCond %{ HTTP S} off RewriteRule ^(.*)$ https://%{ HTTP _HOST}%{REQUEST_URI} [L,R=301] RewriteRule ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .* /index.php [L] ------
teraota27

2019/09/24 02:03 編集

度々申し訳ありません。 http→https のリダイレクトの件は自己解決いたしました。 記述場所を変えて以下の記述で正しく動作いたしました。 ありがとうございました! ------ RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] RewriteBase / RewriteCond %{HTTP_HOST} ^www.example.com$ RewriteRule (.*) https://www.example.jp/$1 [R=301,L] RewriteRule (.*)index.html$ https://www.example.jp/$1 [R=301,L] RewriteRule ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .* /index.php [L] ------
guest

0

こちらを御覧ください
http://toretama.jp/unify-url-index-none.html

投稿2019/07/16 04:11

nanami12

総合スコア1015

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問