mod_rewriteについて


バーチャルホスト上で動作しているPHPスクリプトのパラメーター付URIをapache2のmod_rewriteを利用して静的化しようとしていますが上手くいきません。

http://sample.com/php/sample.php?para=XXXXXXX (XXXXXXXはフォームからポストしたパラメーターなので2バイト文字も含むURLエンコードされた値が入ります。)
を、http://sample.com/php/XXXXXXX/ に変換する要件に対して、

httpd.conf
<VirtualHost XXX.XXX.XX.XX:XX>
ServerName XXXX.XX
DocumentRoot /home/XXXXX/public_html
RewriteEngine on
RewriteLog logs/rewrite.log
RewriteLogLevel 9
RewriteRule http://sample.com/php/(.+) http://sample.com/php/sample.php?para=$1
RewriteRule http://sample.com/php/(.+)/ http://sample.com/php/sample.php?para=$1
</VirtualHost>

そこで http://sample.com/php/testvalue/ とリクエストした所上手く動作しませんでした。(FileNotFond)
rewrite.logには変換の経緯がロギングされていますが上手く言ってないように思えます。

rewrite.log
init rewrite engine with requested uri /php/testvalue
applying pattern 'http://sample.com/php/(.+)' to uri '/php/testvalue'
applying pattern 'http://sample.com/php/(.+)/' to uri '/php/testvalue'
pass through /php/testvalue

色々試していますがはまってしまっています、お助けよろしくお願いします。






回答の条件
  • 1人3回まで
  • 登録:2009/06/29 20:12:50
  • 終了:2009/06/29 22:13:29

回答(3件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402009/06/29 20:55:22

ポイント100pt

なんか無駄な表記があるなぁ。

RewriteEngine on

RewriteLog logs/rewrite.log

RewriteRule ~/php/([^/]+) /php/sample.php?para=$1 [L]

これだけでいいでしょ。

id:natsumi2000

素早いご返答ありがとうございました。

rewrite '/php/template.html' -> '/php/sample.php?para=template.html

こんなログをはいてスクリプトがストップしてしまいました。

このスクリプトはスクリプト内部でテンプレートファイルを読み込んで必要な文字列を置換して吐き出す仕様になっています。

思うにテンプレートを呼んで吐き出すと言うリクエストがmod_rewiteでパラメーター付リクエストとして変換されているように見えます。

たしかに要望する仕様通りの動きなんですが、困りました。

何か逃げる手はないでしょうか?

よろしくお願いします。

2009/06/29 21:41:31
id:pahoo No.2

pahoo回答回数5960ベストアンサー獲得回数6332009/06/29 20:57:47

ポイント100pt

ご質問では RewriteRule が重複しているようですが、改行など正しく記述されていますか?

下記のようにしてみてはどうでしょう。

RewriteEngine On
RewriteRule ^/php/(.+) /php/sample.php?para=$1 [L]
id:natsumi2000

素早いご返答ありがとうございました。

rewrite '/php/template.html' -> '/php/sample.php?para=template.html

こんなログをはいてスクリプトがストップしてしまいました。

このスクリプトはスクリプト内部でテンプレートファイルを読み込んで必要な文字列を置換して吐き出す仕様になっています。

思うにテンプレートを呼んで吐き出すと言うリクエストがmod_rewiteでパラメーター付リクエストとして変換されているように見えます。

たしかに要望する仕様通りの動きなんですが、困りました。

何か逃げる手はないでしょうか?

よろしくお願いします。

2009/06/29 21:41:24
id:pahoo No.3

pahoo回答回数5960ベストアンサー獲得回数6332009/06/29 21:51:20

ポイント10pt

思うにテンプレートを呼んで吐き出すと言うリクエストがmod_rewiteでパラメーター付リクエストとして変換されているように見えます。

そのスクリプトを拝見しないことには、何を仰っているのか分かりません。

悪しからず。

id:natsumi2000

なんとか自己解決しました。

ありがとうございました。

2009/06/29 22:11:17

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません