#ドラえも~ん!ページが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
のほうが使われやすい。
他にもL
やQSA
などがあり
L
はlastを表し、Rewrite判定の終了。
QSA
はquery string appendを表し、クエリパラメータの変更や追加に使う。
複数のオプションを指定するときは
[R=301,L]みたいにカンマ区切りで書くと良い。
順番は関係無いよ。
#編集後記
入社初日で教えてもらったことを、ググりながら深掘りしたので記事書きました。
他にも「RewriteCond」やら「httpd.conf」やら色々あるみたいで、沼が深い!!
正規表現も徐々に慣れていかないとなぁ…