しばらく更新できていなかったので、ぽちぽちノート溜めていこうと思います。
WordPressならば気にしなくて良いですが、Webサイトをアップして公開すると、通常はURLに拡張子が表示されますよね。
「.php」の部分が拡張子です。(※このページは存在しません)
この拡張子の部分をなんらかの事情で表示上だけ消したいといった場合に、URLに表示させない方法です。
なぜ拡張子を非表示にしたいのか
「.html」は馴染み深いので特に違和感を抱くことも少ないと思いますが、「.php」となっていると「なんか怪しい・・・」と思うユーザーもいるかもしれません。
とはいえメンテナンス性が何倍にも跳ね上がるphpは使いたいところ。
あとは、メールフォームを新しく設置することになりphpファイルとhtmlファイルの混在などもあると思います。
特に何もしない場合のURL表示
各ディレクトリの index.php(index.html) はURLの末尾が「/」でも表示されますが、他のページでは拡張子が表示されます。
たとえば
https://xxxxx.com/example/index.php
は
https://xxxxx.com/example/
でアクセスしても同じファイルが参照されます。
しかし、
https://xxxxx.com/example/test.php
は
https://xxxxx.com/example/test/
での表示はできません。
この場合(https://xxxxx.com/example/test/index.php)を参照しているため404エラーになります。
今回やりたいこと
下記のURL
https://xxxxx.com/example/test.php
を、
https://xxxxx.com/example/test
で表示させたい。
拡張子を非表示にする方法
.htaccessに
1 2 3 4 | RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ $1.php |
と書いて、対象のフォルダに入れます。
※今回の場合、https://xxxxx.com/のフォルダ
上記の例は.phpを非表示にする例ですが、.htmlを非表示にしたい場合は「.php」の部分を「.html」に変更してくださいね。
XAMPP等を使ってのローカル環境も同じでOKです。
これで、
https://xxxxx.com/example/test
でのアクセスが可能になりました!
末尾に「/」をつけるとサブディレクトリに飛んでしまうので、拡張子を取り除いたのみの状態でアクセスしてくださいね。
ファイル内のリンク先を編集
拡張子なしでアクセスが可能になりましたが、これは
https://xxxxx.com/example/test
でアクセスした際に
https://xxxxx.com/example/test.php
を表示させているだけに過ぎませんので、ファイル内のリンク指定で
<a href="test.php">
となっていると、もちろん
https://xxxxx.com/example/test.php
へのアクセスになります。
ですので、ファイル内のリンク先も
<a href="test">
と拡張子なしに合わせてあげると
https://xxxxx.com/example/test
といった表示になりますので、適宜書き換えてくださいね。
1からサイトを制作するなら
今回は非表示にする方法をご紹介しましたが、
1からサイトを制作するならば「ページ毎にディレクトリ内にindexを配置していく」というやり方で簡単にURLを正規化できますので、今回の方法をやたらめったら使うのは良くありません。
ただ色々なサイト制作にあたる中で、必要な場面もあると思いますので知識として押さえておくと良いかもしれません。