1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

UniProjectAdvent Calendar 2024

Day 2

.htaccessで、.htmlや.phpを付けずにアクセスできるようにする【保存版】

Last updated at Posted at 2024-12-16

.htaccessの内容に以下を加えてみる。

# RewriteEngineを有効にする
RewriteEngine On

# .php 拡張子を省略してアクセスできるようにする
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/.]+)$ $1.php [L]

# .html 拡張子を省略してアクセスできるようにする
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/.]+)$ $1.html [L]

すると
https://example.com/app.html
でしかアクセスできなかったものが、
https://example.com/app
でアクセスできるようになる!

試す際はバックアップを忘れずに!自己責任で!

解説(概要)!

RewriteEngine On・・・これは、リダイレクト(書き換え)機能をOn(有効)にするよ~という意味。

RewriteCond ~ ~ (~)・・・この行は、リダイレクトを、実施するか否かを条件を指定する。ifのような感じ

今回の場合だと、

%{REQUEST_FILENAME}

で、リクエストされたファイル/パスを取得しようとします。

!-d

で、ディレクトリでない場合(ある場合は -d)、

!-f

で、ファイルでない場合(ある場合は -f)
これらを組み合わせてここまでの動作がされます。
つまり、リクエストされたものが、 「ディレクトリでない」かつ「ファイルでない」場合 に実行されるのが今回の実装の仕組み&内容です。

最後に

RewriteRule・・・先ほどの条件が満たされた/満たされない場合に、転送する先のURLを示します。今回の場合は、正規化表現ですが、詳しく見ると

少し難しいですが、
.phpと.htmlに分かれているだけで、それ以外の部分は同じです。
正規表現の説明をさせていただきます。(即席のスライドで見づらくて恐縮ですが)
正規表現解説 Qiita.png
このような形で正規化し、設定します。

$1.html(.php) [L]

で、$1で、先ほどの正規化部分から取り出し、.htmlや.phpなどの拡張子を付け、リダイレクトをします!

ちなみに、REWRITECONDで、今回は、リクエストされたファイル/パスを取得するために、REQUEST_FILENAMEを使用しましたが、それ以外にもいくつかの変数が使用できます。

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?