.htmlや.phpをサイトURLから簡単に消す方法

多くのサイトでワードプレスが使われるようになって、サイトのURLから.htmlや.phpといった拡張子を消して欲しいという要望がお客さんから出るようになってきました。

他にも運用のしやすさから、サイトをHTMLではなく、PHPでコーディングをすることがあり、PHPに馴染みのないお客さんからはindex.phpという表記を嫌がられることがありました。

ここでは.htaccessを使ってWEBサイトのURLから.htmlや.phpを消す簡単な方法をご紹介します。

この方法使うメリットを簡単に挙げると下記の3つがあります。

  1. 同一サーバー内で複数のWEBサイトがあってもそれぞれのサイト毎に設定ができる
  2. 1つのサイト内に.htmlと.phpのページが混在していても使える
  3. 簡単なコードを書き換えるだけで簡単に使い回しできる

それでは早速見ていきましょう!

スポンサーリンク

拡張子を非表示にしよう!

WEBサイトのURLにくっついてくる.htmlや.phpを消すには「.htaccess」ファイルを使います。

すでにサイトに「.htaccess」が存在する場合は、何らかの設定がすでにされている可能性がありますので、バックアップをとってから進めるようにしましょう。

このファイルは隠しファイルになっているので、Macの方は「shift + command + . 」で表示状態にしておきましょう。

Windowsの方はOSのバージョンによっても異なりますので、Microsoftのこちらのサイトでご確認ください。

隠しファイルを表示する - Microsoft サポート
隠しファイル、隠しフォルダー、隠しドライブの表示方法を説明します。

.htaccessの記述内容

隠しファイルを表示して.htaccessが編集できるようにしたら、下記のコードを記述します。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html 
 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

上の段で、指定のディレクトリから.htmlや.phpのついたファイル名を探してリライトを実行するという至ってシンプルなものです。

コードの意味が分からなくても、上段で.htmlをリライトして、下段で.phpをリライトしているんだなーと何となくわかっていただけるのではないでしょうか。

.htaccessの設置

.htaccessを作成したらWEBサイトに設置していきます。

ファイルの設置は「test」というディレクトリにWEBサイトを作っている場合は、ここに.htaccessを置くことになります。

これだけで.htmlや.phpは消えた状態なります。

URLの正規化と301リダイレクト

これだけでもWEBサイトのURLから.htmlや.phpは消えた状態になっていますが、サイトのURLが2つ存在することになってしまっています。

それがどういう事かというと、同じ内容のページが2つあるようにSEO上見えてしまうという事です。

なぜかというと、.htmlや.phpを付けても付けなくても表示でるため、下記のようなURLで実質同じ内容のページが2つあるということになっているのです。

https://sample.com/test/sample.php
https://sample.com/test/sample

これはSEO的に見ると評価が分散してしまうことなどからあまり好ましい状態ではありません。

そこで「301リダイレクト」して、検索エンジンからの評価を集めたいURLを統一し、SEO評価の分散を防ぎます。

これをURLの正規化といいます。

URLを正規化しないと、SEOの評価が分散してしまう可能性があり、検索順位に悪影響を及ぼす可能性があります。

正規化するためのコードも先ほどの.htaccessの中に記述していきます。

RewriteCond %{THE_REQUEST} \.(php|html)\ HTTP
RewriteRule ^(.*)\.(php|html)$ /test/$1 [R=301,L]

2行目にある「/test/」の部分は設置するディレクトリの名前を入れましょう。

運用上の注意点

メリットの一つに挙げていた使い回しができるという点で、運用上注意が必要なことがありました。

WEBサイトを本番のドメインとサーバーで作っていく場合は問題にならないのですが、テストサーバーを使って、構築する場合です。

テストサーバーを使う場合の多くはドメインのルートディレクトリ直下に作る場合と、サブディレクトリの中に複数のテストサイトを作る場合があります。

サブディレクトリの中にテストサイトを作る場合には、ドメイン直下のディレクトリからのURLを先ほどの「/test/」の部分に書いていかなければいけません。

例えば、ドメイン > test > samplesite といった形で、ドメイン直下にはtestのディレクトリを置いて、この中に「samplesite」というWEBサイトを作るとします。

その場合、先ほどの301リダイレクトの「/test/」の部分はこのようになります。

RewriteCond %{THE_REQUEST} \.(php|html)\ HTTP
RewriteRule ^(.*)\.(php|html)$ /test/samplesite/$1 [R=301,L]

まとめ

.htaccessの内容をまとめると以下のようになります。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html 
 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

RewriteCond %{THE_REQUEST} \.(php|html)\ HTTP
RewriteRule ^(.*)\.(php|html)$ /test/$1 [R=301,L]

いかがでしたでしょうか?

調べて見ると意外に簡単な仕組みで、.htmlや.phpといった拡張子を非表示にすることができるんですね。

SEO対策までしっかり考えて、より良いWEBサイト構築を一緒に目指していきましょう!

コメント

タイトルとURLをコピーしました