勉強したことのメモ

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 サーバー

  関連記事

htaccessとhttpd.confの優先度

既に完成しているシステムを引き継ぐことがあり、そこのリライトルール設定を変更した ...

htaccessファイルにてVPS⇔レンタルサーバ間のリバースプロキシ設定を行う方法

VPSの指定したディレクトリにアクセスした場合、レンタルサーバの指定したディレク ...

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

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

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

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

特定ディレクトリ以下のBasic認証を無効化する方法

Basic認証を設定しているサイトがあり、そちらを解除したかった。通常の場合だと ...