AstroでWebサイトを構築する際に、現在のページのパスやURLを取得したい場合がありますね。
Astroでは便利なグローバルオブジェクトやAPIが提供されており、それらを活用することで簡単に現在のページのURLを取得することができます。
本記事では、AstroのランタイムAPIを活用して、現在のページのパスやURLを取得する具体的な方法について解説します。
動作環境
当記事で紹介する方法は、以下のバージョンで動作確認を行っています。
バージョンが異なると当記事で紹介している通りに動作しない可能性があるので、ご注意ください。
Astroで現在のページのURLを取得する
まずは現在のページのURLを取得する方法から見ていきましょう。
Astroのグローバルオブジェクトを利用するには、.astro
ファイル内である必要があります。
そのため、.astro
ファイル内で以下のコードを実行してください。
方法1. Astro.url.hrefを使用する
1つ目は、Astro.url.href
を使用する方法です。
このコードを実行すると、以下のような結果になります。
現在のページURL: https://webtech-media.jp/article/astro-get-url/
現在のページのURLが正しく表示されていますね。
Astro.url
は URLオブジェクト を返すので、href
以外にもorigin
やpathname
などのプロパティを利用することもできます。
詳しくは、Astroの公式ドキュメントを参照してください。
方法2. Astro.request.urlを使用する
2つ目は、Astro.request.url
を使用する方法です。
こちらの実行結果は以下の通りです。
現在のページURL: https://webtech-media.jp/article/astro-get-url/
先ほどと同様に、現在のページのURLが正しく表示されています。
Astro.request
は Requestオブジェクト を返すので、url
以外にもmethod
やheaders
などのプロパティを利用することもできます。
Astroで現在のページのホスト名やパス等を取得する
次に、現在のページのホスト名やパスを取得する方法を見ていきましょう。
これらはAstro.url
オブジェクトのプロパティを利用することで取得できます。
以下は上記のコードの実行結果です。
現在のページのオリジン: https://webtech-media.jp
現在のページのホスト名: webtech-media.jp
現在のページのパス: /article/astro-get-url/
他にも取得できるプロパティはいくつかありますので、詳しくは 公式ドキュメント を参照してください。
本番環境でURLが正しく取得されない場合
上記で紹介したコードを使用しても、本番環境でlocalhost
のURLが取得される場合があります。
この場合は、astro.config.mjs
ファイルに記載すべき設定が抜けている可能性があります。
astro.config.mjsに設定を追加する
本番環境で正式なURLを取得するためには、astro.config.mjs
ファイルに以下の設定を追加してください。
上記の通り、site
プロパティに本番環境のURLを指定することで、本番環境で正式なURLを取得できるようになります。
まとめ:Astroで現在のページのパスやURLを取得する方法
Astroでは、Astro.url
やAstro.request
を利用することで、簡単に現在のページのURLやパスを取得することができます。
これらのAPIは.astro
ファイル内でのみ利用可能なので、URLやパスを取得する際はぜひ活用してみてください。