dポイントプレゼントキャンペーン実施中!

print.php
----
$i=$_GET['que'];
$fname= file/$i.'.php';
include 'header.php'; include $fname; include 'footer.php';
----

というphpファイルがあります。

たとえば、localhost/print.php?que=cat にアクセスすると 
header.php、file/cat,php、footer.phpをあわせたものが出力されることを想定しています。

最近、.htaccessというものを設定することによってURLを書き換えることができると知り、
localhost/cat.phpにアクセスしてもheader.php、file/cat,php、footer.phpをあわせたものが出力されるように、htaccessファイルに
----
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)\.php$ print.php?que=$1
RewriteRule ^([a-zA-Z0-9_-]+)/\.php$ print.php?que=$1
----
と記述しました。

localhost/cat.phpにアクセスすると、localhost/print.php?que=catに書きかえられるので、print.phpにque=catがGETされ、
header.php、file/cat,php、footer.phpが出力されると期待したためです。

しかしいざ実行してみると、 failed to open stream: No such file or directory とエラーが出てきます。

原因を探ってみたところ、echo $fname;としてみると page.phpとのみ出力されることから、どうやらqueが正常にgetされていないようです。


自分ではこれ以上の原因と対策がわからないので、localhost/cat.phpと入力するとprint.phpにque=catをGETさせるような方法を教えてください。

よろしくお願いします。

A 回答 (1件)

$fname= file/$i.'.php'; という部分ですが $fname = 'file/'.$i.'.php'; となるのが正しいかと思いますが、こちらは単なる記載ミスでしょうか?



mod_rewrite を使わずに localhost/print.php?que=cat でアクセスした時は正しく表示されていますか?
    • good
    • 0
この回答へのお礼

>$fname= file/$i.'.php'; という部分ですが $fname = 'file/'.$i.'.php'; となるのが正しいかと思いますが、こちらは単なる記載ミスでしょうか?

申し訳ありません。記載ミスです。

>mod_rewrite を使わずに localhost/print.php?que=cat でアクセスした時は正しく表示されていますか?

.htaccessはlocalhostの直下に
---
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)\.php$ print.php?que=$cat
RewriteRule ^([a-zA-Z0-9_-]+)/\.php$ print.php?que=$cat
---
と書かれております。

1)この.htaccessが存在しない場合、localhost/print.php?que=catは正しく表示されます。(file/cat.phpがincludeされる)

2)この.htaccessが存在する場合、localhost/print.php?que=catは正しく表示されません。(file/cat.phpがincludeされない)
localhost/cat.phpは正しく表示されません。(file/cat.phpがincludeされない)

お礼日時:2012/02/24 00:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!