質問: .htaccessで存在しないページ(404)に飛ばす処理をPC・スマホで振り分ける方法を教えてください。 今は下記のように記述していますが、この記述だけだとスマホ版のエラーページもPC版のエラーページが表示されてしまうようです。 ``` ErrorDocument 404 /error/ ``` **PCの404ページURL** /error/ **スマホの404ページURL** /sp/error/ /sp/error/←こちらに直接アクセスすれば、ファイルが存在するため当然ページは表示されますが、 /sp/error/aaaaaaaaa←こういったURLにアクセスすると、URLはこのままでPCページが表示されます。 ユーザーエージェントの判定はPHPで行っています。 よろしくお願い致します。
回答: フレームワーク等によるルーティングが特に行われていないのであれば、 /error/ にindex.phpを置いて、その中でUAの判定をしてスマホの場合のみ /sp/error/ にリダイレクトさせる(PCの場合はこれまでのエラーと同じ処理をする)と言うのが一番楽だと思います。 mod_rewriteでUAを判定してそれぞれのエラー先を表示することも可能ですが、 UA判定はPHPか.htaccessかどちらかに統一しておく方が保守性の観点から好ましいかと思います。 追記 最初に/error/に飛ばすのはこれまで通りの.htaccessで行って、 その先(スマホの場合のみ別のエラーページに飛ばす処理)をPHPでやるという意味です。