勉強したことのメモ

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

  関連記事

アクセスしてきたURLをRewriteRuleで書き換えたい

「http://aaa.com/a」というURLを叩いた際に「http://aa ...

apacheで指定した期間(日時)のアクセスログを抽出する方法

apacheのaccess_logとerror_logで特定日時内のログのみを確 ...

他ドメインから画像の呼び出し(直リンク)を禁止する方法

他ドメインからの画像の呼び出し、いわゆる直リンクの禁止を行いたかった。調べるとh ...

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

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

htaccessを置いてあるフォルダのファイルを参照

曖昧だけどhtaccessでベーシック認証とかIP制限かかってる フォルダ内のプ ...