質問: ■実現したいこと(概要): クエリパラメター無しのURLにアクセスしたら、自動的にクエリパラメタを付加したURLに飛ばしたい。 ■実現したいこと(詳細): 1.現在、クエリパラメターを使って、DB連携で表示させるようなプログラムを 作成している。 2.具体的には、 http://◎◎◎.php?lan=en であり、この場合、 ◎◎◎.phpのプログラムの中で、 DBから、「lan=en、即ち言語がenglish」のものを抽出して、 表示させています。 3.当然のことながら、 単純に、クエリパラメター無しの http://◎◎◎.phpにアクセスした場合には、 正常な表示がなされません。 4.やりたいこと: 具体的には、 http://◎◎◎.phpへのアクセスがあった場合に、 自動的に、 http://◎◎◎.php&lan=en という具合に、クエリパラメターを付加して表示させたい。 .htaccessへ記載すればいいのでしょうか? (追加の質問) ・.htaccessに記載する方法の場合、SEO対策的には有効な方法と考えられるの でしょうか? 以上、よろしくお願いいたします。
回答: 解決しました! .htaccessファイルを使うことはせず、isset関数を使うことで解決しました ■結論 phpファイルの最初の行で以下のように記載。 ``` ``` ■コードの説明 ・isset関数を使うことによってクエリパラメターチェック ・三項演算子を使ってすっきりしたコードに ■PHP動作の流れ ◎パターン1 `http://example.com/XXX.php?lan=en` でアクセスされた場合は、isset関数を使うことによってクエリパラメターをチェックし、`$_GET['lan']`があるので、`$lan=$_GET['lan']`として処理が進む。 つまり、これまで通り`http://example.com/XXX.php?lan=en`のURLとして表示 ◎パターン2 `http://example.com/XXX.php` でアクセスされた場合は、isset関数を使うことによって、クエリパラメターをチェックし、`$_GET['lan']`がないので、内部的に、`$lan='en';`として値を代入 この場合、URLとして表示されるのは`http://example.com/XXX.php`ですが、 内部的には、`http://example.com/XXX.php?lan=en`にアクセスされた場合と同じ処理 この投稿は @きむちゃん さんのコメント を元にコミュニティwikiとして投稿しました。