質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

773閲覧

[php]URLの整形_pageがついた時以外は削除したい

takumi2

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2021/09/09 10:28

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
制作会社さんにPHP(Laravel)でCMSを構築してもらいました。
そのCMS内でcanonical設置をする必要があります。
その際にURLの正規化(特定のパラメータ以外は削除)を行いたいです。
PHPをほとんど触ったことがないので、初歩的な質問で恐縮ですがお知恵をお借りで来ますと幸いです。

実現したいこと

現在のURLを取得し、ページ情報のパラメータのみのURLに整形したいです。
・ページ情報のパラメータ:?page=**

具体的には以下のような形です。
hoge.com/   → そのまま
hoge.com/?page=123   → そのまま
hoge.com/?parameta=123  → 「hoge.com/」を取得
hoge.com/?parameta=123&page=123  → 「hoge.com/?page=123」を取得

試したこと

以下の手順かなと思ったのですが、どうもpageだけ取り出すのがわからず。。。
現在のURL取得
→条件分岐(パラメータなし):パラメータなしURLを出力
→条件分岐(パラメータ付き):要整形URL(このパラメータ制御が綺麗にできず)

過去にWordPressで似たようなことをやったのですが、整形方法までわからず断念しました。。。

<?php global $wp; $url = $_SERVER['REQUEST_URI']; $current_url = add_query_arg( $wp->query_string, '', home_url( $wp->request ) ); $current_url = strtok( $current_url, '?' ); ?> <!-- パラメータがついた時はパラメータ削除 --> <?php if(strstr($url,'?')): ?> <link rel="canonical" href="<?php echo $current_url ?>"> <?php else: ?> <!-- パラメータがついてない時は自URLを出力 --> <link rel="canonical" href="<?php echo (empty($_SERVER["HTTPS"]) ? "http://" : "https://") . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]; ?>"> <?php endif; ?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

Laravelを使っておられるとのことですので、以下のような形でどうでしょうか。

// 現在のURLを取得 $url = url()->current(); if (request()->filled('page')) { // page パラメータがあれば追記 $url.= '&page='.request()->input('page'); } echo $url;

投稿2021/09/10 01:02

fujinyo

総合スコア36

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問