サーバ等の設定や操作

htaccessでリダイレクトする方法

htaccessでリダイレクト

htaccessでリダイレクトする方法です。
リダイレクトとは、
簡単に説明をすると
Webサイトを見ていると
たまに閲覧しようとしたURLが
自動的(勝手)に切り替わる事が
有ると思います。
指定されたページにアクセスした時に
自動的に指定した他のページに
転送さることをいいます。

リダイレクトを使うのは、
サイトの構造などを変更して
古いURLへアクセスが有った時に
新しいURLへ転送させて
新しいURL誘導したい時に
よく使います。

リダイレクトの指定方法は
WordPressなどでは、
WordPressの
プラグインをインストールして
プラグインから
リダイレクトの設定も可能です。

私はWordPress以外でも
静的なHTMLで作成された
Webサイトのリダイレクトの
設定もするので
どちらでも使えるので
htaccessを編集する方法を
使っています。

またプラグインだと
プラグインのメンテが
終わった時に急に使えなくなったりして
困る事も起こったりするので
それもhtaccessを使う理由の一つです。

Xserverだとhtaccessを編集しての
リダイレクトはできますが、
全てのレンタルサーバーで
htaccessを編集しての
リダイレクトが可能か
どうかは不明です。
htaccessを編集してリダイレクトをする時は
使っているレンタルサーバーで
htaccessを編集しての
リダイレクトが可能か
確認は必要になります。

リダイレクトの設定をしたい例:

https://gahaha.xyz/リンゴ.html
https://gahaha.xyz/みかん.html
https://gahaha.xyz/トマトの情報.html

https://gahaha.xyz/フルーツの情報/リンゴ.html
https://gahaha.xyz/フルーツの情報/みかん.html

https://gahaha.xyz/野菜の情報/トマト.html

のように階層構造を
変更した時が有ります。
初めにコンテンツ・カテゴリーの設定を
考えてしておけばいいのでは?
と思う人も多いからしれませんが、
作っているうちに
こうしておけば良かったと
思う事も多いのも事実です。

古いURLを削除・新規に作成でも
いいのでは?
と思うかもしれませんが、
古いURLの検索エンジンの
評価を引き継ぎたい
古いURLを保存している人が多々いる。
などの理由が有る場合は、
削除・追加をすると
あまり良いとは思いません。
せっかくのアクセスを
無くしてしまいます。

そういう時には古いURLに
アクセスが有った時は
新しいURLへ転送する仕組みが、
Webサーバにあります。

.htaccessにリダイレクトの記述をする



画面をクリックすると別画面で大きく表示されます。

古いURLへのアクセスを
新しいURLへ転送するためには、
.htaccessにリダイレクトの記述をします。

原則としてWebサーバはApacheです。
※Xserverで動作確認済み

リダイレクトには種類ありますが、
今回のような恒久的な変更をする場合は
301リダイレクトを使います。
ほとんどのリダイレクトは
301になると思います。

リダイレクトの記載をする前には、
記述ミスをして
ブラウザーにエラーが出たり
何も表示されなくなった時に
元に戻せるように
かならず作業の前に.htaccessの
バックアップを取ってから作業をします。

静的なHTMLファイルでのリダイレクトの例

HTMLファイルで構築されたWEBサイトでの
リダイレクトをする時の例になります。

例として

https://gahaha.xyz/a.html

にアクセスすると

https://gahaha.xyz/img/b.html

にリダイレクトさせる設定です。

.htaccess

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://gahaha.xyz/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www\.gahaha\.xyz$
RewriteRule ^(.*)$ https://gahaha.xyz/$1 [R=301,L]
RewriteRule ^a.html$ /img/b.html [R=301,L]

※上の行はSSL化とwwwを取り除く処理
 301リダイレクトは最後の一行
<IfModule mod_rewrite.c>
</IfModule>
で囲んでいませんが、
囲んでおきましょう。

動的なHTMLファイルでのリダイレクトの例



画面をクリックすると別画面で大きく表示されます。

動的と書いていますが、
WordPressで構築されたWEBサイトでの
.htaccessを使ったリダイレクトを
する時の例になります。

例として

https://gahaha.xyz/a.html
へアクセスすると
https://gahaha.xyz/category/b.html
へリダイレクトする設定です。



画面をクリックすると別画面で大きく表示されます。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://gahaha.xyz/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www\.gahaha\.xyz$
RewriteRule ^(.*)$ https://gahaha.xyz/$1 [R=301,L]
</IfModule>


<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^a.html$ /category/b.html [R=301,L]
</IfModule>

# 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

※上の行はSSL化とwwwを取り除く処理
 301リダイレクトは
RewriteRule ^a.html$ /category/b.html [R=301,L]
の部分

WordPressの場合は、
リダイレクトの設定を
# BEGIN WordPress
の前に書きます。
後ろに書くと
アクセスができません。
設定ファイルを編集する時は
別の同じような設定の上か下の
どちらの場所に記述するのか
わからない時も有りと思います。
どちらが先に実行されるかで
結果が違ってきます。
リファレンスを確認するのが
いいとは思いますが、
わからなければいきなり
本番環境で実行せずに
テスト環境を作って
今回の場合だと上に記述した時と
下で記述して時でどうなるか
テストをしてみてください。

戻る

htaccessでリダイレクトする方法は
以上になります。

 
スポンサーリンク


-サーバ等の設定や操作
-, ,

© 2024 ラズベリーパイとサンデープログラミング