質問: ブログのようなスクリプトの制作を考えています. ``` https://www.hoge.com/articles/0f60e2776530c9efa2e35c707d455a79 ``` というアドレスにアクセスしたとき, そこで ``` https://www.hoge.com/articles/?id=0f60e2776530c9efa2e35c707d455a79 ``` の内容が表示されるようにしたいのですが, これは.htaccessによるリダイレクトで実現できるでしょうか?
回答: リライトかリダイレクトをするのかによって変わってきます。 リライト 書き換えるだけでアクセスした人のブラウザにはもとのアドレスが表示されています。 リダイレクト 書き換えつつURLが変わったことをアクセスした人に伝えブラウザには書き換え後のアドレスが表示されています。 その中でも301リダイレクトはアクセスしてきたものに対してもとのアドレスは書き換え後のアドレスに変わったのでこっちを使ってくださいといった感じのものです。 302リダイレクトは何らかの理由でとりあえず書き換え後のアドレスを使っておいてくださいといった感じのものです。 mod_rewriteを使います。 RewriteEngineがonの状態で ``` RewriteCond 条件で絞り込む RewriteRule 書き換え前 書き換え後 フラグ(ここにR=301などと書いてリダイレクトを指定します) ``` の様に書きます。 今回の場合 ``` RewriteRule ^articles/(.+)$ /articles/?id=$1 [R=301, L] ``` の様になると思います。 リライトの場合はR=301のリダイレクトを指定しなければいいですが、注意としてドメインを入れてしまうと外部へのリダイレクトとして扱われて一旦ブラウザに302コードが返ってしまい(リダイレクト)、結果としてリダイレクトになってしまいます。