質問: .htaccessのリダイレクトにつきまして、 書き方に自信がなかったので、アドバイスをいただけますと幸いでございます。 (旧)https://neko.com/aaa/bbb.html ↓ (新)https://neko.com/aaa/bbb/ ※index.htmlは省略 このようにリダイレクトをしたい場合は、 次のような書き方で合っておりますでしょうか? `RewriteRule ^aaa/bbb.html$ https://neko.com/aaa/bbb/ [R=301,L]` もし「こういう書き方の方がより良い」というものがございましたら、 アドバイスをいただけますと幸いでございます。 また、.htaccessの全体の記述につきまして、 1wwwなしバージョンに統一 2httpsに統一 3index.htmlなしに統一 4aaa/bbb.html→aaa/bbb/に変更 上記のルールを ``` RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.neko\.com RewriteRule ^(.*)$ https://neko.com/$1 [R=301,L] RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://neko.com/$1 [R=301,L] RewriteCond %{THE_REQUEST} ^.*/index.html RewriteRule ^(.*)index.html$ https://neko.com/$1 [R=301,L] RewriteRule ^aaa/bbb.html$ https://neko.com/aaa/bbb/ [R=301,L] ``` このように記載した際、 RewriteRule ^aaa/bbb.html$ https://neko.com/aaa/bbb/ [R=301,L] の部分だけRewriteCondがないのですが(どのような条件を入れていいのか分からなかったので)、 このような書き方で間違っていないでしょうか? 初歩的な質問で恐れ入りますが、 何卒よろしくお願い申し上げます。
回答: > > 次のような書き方で合っておりますでしょうか? > > > 合っています。強いて直すとすれば、`^aaa/bbb.html$`⇒`^aaa/bbb\.html$`でしょうか。 あと、`https://neko.com`の部分が変わらないのであれば、`RewriteRule ^aaa/bbb\.html$ /aaa/bbb/ [R=301,L]`でもいいです。 > > このような書き方で間違っていないでしょうか? > > > 間違っていませんが、`RewriteCond %{THE_REQUEST} ^.*/index.html`は無意味なので取りましょう。 あと、`http://www.neko.com/aaa/index.html`がリクエストされた場合、 1.`http://www.neko.com/aaa/index.html` ⇒ `https://neko.com/aaa/index.html` 2.`https://neko.com/aaa/index.html` ⇒ `https://neko.com/aaa/` と2回リダイレクトされるので、順番を入れ替えた方が良いと思います。 ``` RewriteEngine On RewriteRule ^(.*)index\.html$ https://neko.com/$1 [R=301,L] RewriteRule ^aaa/bbb\.html$ https://neko.com/aaa/bbb/ [R=301,L] RewriteCond %{HTTP_HOST} ^www\.neko\.com RewriteRule ^(.*)$ https://neko.com/$1 [R=301,L] RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://neko.com/$1 [R=301,L] ```