人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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









●質問者: natsumi2000
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:ENGINE HOME httpd mod_rewrite ON
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● b-wind
●100ポイント

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

RewriteEngine on

RewriteLog logs/rewrite.log

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

これだけでいいでしょ。

◎質問者からの返答

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

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

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

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

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

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

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

よろしくお願いします。


2 ● pahoo
●100ポイント

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

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

RewriteEngine On
RewriteRule ^/php/(.+) /php/sample.php?para=$1 [L]
◎質問者からの返答

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

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

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

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

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

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

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

よろしくお願いします。


3 ● pahoo
●10ポイント

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

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

悪しからず。

◎質問者からの返答

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ