LoginSignup
1
1

More than 5 years have passed since last update.

.htaccessを編集してリダイレクトする。

Last updated at Posted at 2019-04-01

ドラえも~ん!ページが404だよ~(泣

どうやらリンクが切れてしまっていてあるページにアクセスしようとすると404が返って来てしまうみたい。
新しいページを作るのは面倒だし、トップページを表示させるようにしたい…
でも、いちいち<a>タグを全て編集するのも面倒…
どうすれば良いの~(泣

.htaccess編集して301リダイレクトしなよ

え?あの.htaccessって良くわからない英語がバーって書かれているアレ!?
そんなの編集出来ないよ…
イタッ、わかったよ~、なんとか出来るように調べるよ~(泣

STEP1:RewriteEngine onする。

.htaccessの一番最初の行に書く「おまじない」みたいなもん。
Apacheのモジュールであるmod_rewriteを利用するときに使う宣言文らしい。

STEP2:RewriteRuleを書く。

RewriteRule ^index/naiyo.html$ index/aruyo.html [R=301]
みたいなヤツ、頭痛がするね…
でも日本語で説明すると簡単で
URL書き換え アクセスされたURLの正規表現 リダイレクト先のURL [オプション配列]
って感じ。

RewriteRule ^index/naiyo.html$ index/aruyo.html [R=301]

「index/naiyo.htmlにアクセスされたらindex/aruyo.htmlに301リダイレクトしますよ」
ってこと。

STEP3:.htaccessをサーバーにアップロードしてWIN!

ね?簡単でしょ??
でも、のび太くんは色々疑問があるみたいだね

?1:正規表現ってなんや?

ググれ
と言ってものび太くんは泣いてしまうから、簡単に説明しよう。

.htaccessで使う正規表現は
ハットと呼ばれる^と、ドルと呼ばれる$の間に書くんだ

例えば^page1$という正規表現を書くと
pageはミスマッチ
page1はマッチ
page2はミスマッチ
page30はミスマッチ
となる。

でもそれだけじゃ柔軟性が無いので
何でも良い1文字を表す.と、0文字以上を表す*、1文字以上を表す+を使っていく

例えば^page.*という正規表現を書くと
pageはマッチ
page1はマッチ
page2はマッチ
page30はマッチ
となる。

そして^page.+$という正規表現を書くと
pageはミスマッチ
page1はマッチ
page2はマッチ
page30はマッチ
となる。

*+は挙動が少し違うから注意が必要!
あと.というものが存在するので、ドットを正規表現に含めたいときは\.という感じにエスケープしなければならない。

?2:[オプション配列]のR=301ってなんや

簡単にいうとリダイレクト(redirect)の設定を指定しているんだ。
R=301は301リダイレクト、恒久的なページ移動の際の設定。
R=302は302リダイレクト、一時的なページ移動の際の設定。
基本的にはSEO的に301リダイレクトのほうがページ評価を引き継げるのでR=301のほうが使われやすい。

他にもLQSAなどがあり
Lはlastを表し、Rewrite判定の終了。
QSAはquery string appendを表し、クエリパラメータの変更や追加に使う。

複数のオプションを指定するときは
[R=301,L]みたいにカンマ区切りで書くと良い。
順番は関係無いよ。

編集後記

入社初日で教えてもらったことを、ググりながら深掘りしたので記事書きました。
他にも「RewriteCond」やら「httpd.conf」やら色々あるみたいで、沼が深い!!
正規表現も徐々に慣れていかないとなぁ…

1
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1