勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

.htaccessでURLの末尾のphpという拡張子が無い場合でもページを表示させる方法

  Apache サーバー

「/hoge/test.php」のようなディレクトリ・ファイル名の場合は「https://test.com/hoge/test.php」というURLになると思うが、これを「https://test.com/hoge/test」でもページ表示できるようにしたい。.htaccessでの設定方法をメモ。

 

ソースコード

RewriteEngine on
RewriteBase /hoge

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)/+$ ./$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]

末尾のスラッシュを消す

RewriteRule ^(.*)/+$ ./$1 [R=301,L]

上記でURLの末尾にスラッシュがある場合はスラッシュ無しのURLにリダイレクトさせている。尚、リダイレクトの際に相対パスを使っているためRewriteBaseを設定する必要がある。

末尾のphp無しでもページ表示

RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]

上記でURLに.phpが無くてもページ表示できるようになる。

 

参考サイト

https://www.javadrive.jp/apache/htaccess/index9.html

 - Apache サーバー

  関連記事

フォルダにリンク制限をかける

imgというフォルダがあり、直接URLを叩いても 中身を見られないけど、同一サー ...

ブラウザがWebP対応の場合はそのまま表示し、非対応の場合はjpg/png画像を表示させる方法

ページ表示時にブラウザがWebP画像に対応している場合はそのまま表示し、非対応の ...

htaccessファイルでダイジェスト認証を行う方法

何かで調べ物をしていたときにdigest認証というものを見かけた。basic認証 ...

画像やPDF等のファイルへの直接アクセスは禁止し、PHP経由のみ表示やダウンロードを可能にする

ファイルアップローダーを作成する案件があり、アップロードしたファイルは「http ...

複数(PHP / metaタグ / htaccess)の方法で301リダイレクト

サイトのディレクトリやファイル名を大幅に変えるという案件があった。それ自体は問題 ...