- 締切済み
phpでURLから「?」を省略する事は可能ですか?
phpでURLから「?」を省略する事は可能ですか? 例えば exampe.com?key=value は $_GET["key"] で取得していましたが exampe.com/value を$_SERVER['REQUEST_URI']でvalueを取得するようにしたいです
- みんなの回答 (4)
- 専門家の回答
みんなの回答
htaccessファイルが設置できるなら、 RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.+)$ index.php?key=$1 [L] 設置できないなら http://exampe.com/value は無理と思います。 http://exampe.com/index.php/value なら可能と思います。 $_SERVER["PATH_INFO"]に/valueが入り、 $_SERVER['REQUEST_URI']には/index.php/valueが入っていると思います。 加工してvalueが取得できると思います。 サーバーがOptions +MultiViewsの設定になっているのでしたら、 http://exampe.com/index/value まで省略できると思います。 さらに、index.phpのファイル名をk.php等に変更すると、 http://exampe.com/k/value まで短く出来ると思います。 どこまで出来るかはサーバーしだいと思います。
- sekentetsu
- ベストアンサー率0% (0/1)
.htaccessを使うと可能です。 例) RewriteEngine On RewriteRule ^/(.*)$ /index.php?key=$1 [L] /のアクセスを/index.phpへリダイレクトしてkeyに/以降の値を渡します。 他にも色々と出来るのでmod_rewriteを調べてみると良いと思います。 (補足) apacheの古いものだとエンコード(%2f)の問題がある場合があります
- mtaka2
- ベストアンサー率73% (867/1179)
PATHINFOを使ってください。 http://example.com/path/file.php/aaa/bbb といった感じで、PHPファイルにさらに/以下を付けたURLでアクセスすると、 file.php が起動し、$_SERVER['PATH_INFO'] で「/aaa/bbb」が取得できます。 http://example.com/value のように、php ファイルを指定せずに PHP を起動するようにしたい場合は、 別途 .htaccess で RewriteRule を使うなどして http://example.com/value を、http://example.com/index.php/value に書き換える、といった処理が必要です。
- yambejp
- ベストアンサー率51% (3827/7415)
exampe.com?key=valueというのは exampe.comにあるインデックスファイルたとえばindex.phpでデータを受けています。 結果exampe.com/index.php?key=valueということです 一方exampe.com/valueというのは exampe.comにあるvalueディレクトリにあるインデックスファイルを指定しています 結果exampe.com/value/index.phpということです アクセス先の構造がことなるものですので、やることによって弊害がでてくる ことを無視できません。 たとえば、exampe.com/imageにある画像を取りにいこうとして失敗したり、 exampe.com/hoge/fugaにアクセスする際に定義が不十分だとexampe.com/hoge?fugaなのか exampe.com?hoge/fugaなのかわかりません。 もしどうしてもやりたいならhtaccessのRewriteRuleをきちんと学習してみてください。
お礼
RewriteRuleを調べてみようと思います。 回答ありがとうございました。
お礼
$_SERVER['PATH_INFO']で/aaa/bbbが取得できるのは簡単そうで良さそうです。 回答ありがとうございました。