【Apache】mod_rewriteについて語るスレ (686レス)
上下前次1-新
164(1): 2006/03/09(木)08:30 ID:??? AAS
>>163
RewriteRule ^hoge/([^/]+)/$ ho.php?user=$1&%{QUERY_STRING} [L]
165: 2006/03/10(金)01:49 ID:wS29C68G(1) AAS
エロ屋やアマゾンとかで
/-/detail/=/
とかいうURLがあるけどあれもmod_rewrite?
ハイフンとかなんか意味あるのかな
166(2): [age] 2006/03/13(月)12:10 ID:??? AAS
RewriteEngine on
RewriteRule ^/dir/hoge/([0-9]+).html$ /dir/hoge.php?id=$1
として/dir/hoge/nn.htmlのアクセスを/dir/hoge.php?id=nnに
rewriteし、/dir/hoge.phpは動作するのですがQUERY_STRINGのid=nnが
hoge.phpに渡りません。なにかRewriteRuleの書き方におかしな点が
ありますでしょうか?
167: [age] 2006/03/13(月)12:14 ID:??? AAS
↑申し遅れました。CentOS3.4+Apache1.3.33、ちなみにphp4.4.2です
168: 2006/03/13(月)12:24 ID:??? AAS
>>166
もちろん実際のnnは数字でここではサンプルとしてnnと書いたんだよね
169: [age] 2006/03/13(月)13:19 ID:??? AAS
そうです。nnは数字です。
ちなみにhoge.phpで参照できる'REQUEST_URI'は
ブラウザ送信された/dir/hoge/nn.htmlがそのまま来ますので
hoge.php側で何とかできそうですが、
腑に落ちないのとhoge.phpを変更したくないので
設定に落度があるのならそれで解決したいと考えています。
よろしくお願いします。
170: 2006/03/13(月)13:33 ID:??? AAS
>>166
>>164
171(1): [age] 2006/03/13(月)14:37 ID:??? AAS
166です。
よくわからなくなってきました。
RewriteEngineとRewriteRuleをコメントにしても
/dir/hoge/nn.htmlでhoge.phpが呼び出されます。
別の次元でRewriteRuleが効いているようですが
心当たりなしでパニック中。
172: 2006/03/13(月)15:23 ID:??? AAS
>>171
落ち着いて access_log
173: 2006/03/25(土)15:58 ID:rUjENMuu(1) AAS
通常ポートのSSLのhttp→httpsへのリダイレクトはうまくいったのですが、
別ポートにもう一つ設置した445ポートの場合、
外部リンク:www.example.com:445
↓
外部リンク:www.example.com:445
にリダイレクトしたいのですが、RewriteRuleとRewriteRuleを
どのように書いたらいいでしょうか?
174: 2006/04/06(木)05:28 ID:??? AAS
パラメーターに&が入ったときのmod_rewriteについて質問です・・
問題をvar_dumpを使って入ってきたパラメーターだけを表示するプログラムtest.phpにまとめてみました。
あと私のところで使ってる文字コードはUTF-8
<?
var_dump($_SERVER["QUERY_STRING"]);
echo "<br>\n";
var_dump($_GET);
$param = urlencode("coffee&tea");
$directUrl = "外部リンク[php]:hoge.go.jp". $param;
$rewriteUrl = "外部リンク:hoge.go.jp". $param. "/";
省9
175(1): 2006/04/06(木)05:28 ID:??? AAS
case1のdirect_urlの場合外部リンク[php]:hogehoge.go.jpを生成。
そのURL(自分自身なわけだけど)に飛ぶと以下の文字列を吐き出す
string(20) "keyword=coffee%26tea"
array(1) { ["keyword"]=> string(10) "coffee&tea" }
これはOK。これにrewriteを噛ましたい。
問題のcase 2、rewrite_urlの場合外部リンク:hoge.go.jpを生成。
飛ぶとmod_rewrite補足され、変換される。以下ログから抜粋
(3) [per-dir /var/www/hoge.go.jp/] applying pattern '^(.*)/$' to uri 'coffee&tea/'
(4) RewriteCond: input='/coffee&tea/' pattern='^/(.*)/$' => matched
(2) [per-dir /var/www/hoge.go.jp/] rewrite coffee&tea/ -> /test.php?keyword=coffee&tea
省6
176(1): 2006/04/06(木)08:11 ID:??? AAS
>>175
$rewriteUrl = "外部リンク:hoge.go.jp". urlencode($param). "/";
177: 2006/04/06(木)08:59 ID:??? AAS
>>176
あー、なるほど、mod_rewriteにはurlencodeを2重に仕込むのね。
mod_rewriteを延々と弄っててきがつかんかった。
確認取ったところ上手く動きました。
この方法でやってみます。サンクス。
しかしmod_rewrite側での対応は設定はやはり難しいのかなぁ・・・
PHPに入ってくるエンコード状態と出て行くエンコード状態がrewrite使う使わずに関わらず
同じであれば見通しがいいかなーとか思ってたので。
178(1): 2006/04/22(土)02:52 ID:IkBNOhRq(1) AAS
フラグのQSAは、マニュアルに
>このフラッグは、置き換えるのではなく、存在するものに対して、
>rewrite エンジンが代用文字列にあるクエリー文字列にアペンドするようにします。
>rewite ルールでクエリー文字列にデータを追加したいときに使ってください。
とあるのですが、実挙動としてどのようになるのか、よくわかりません。
いったいどうなるのでしょうか?
179: 2006/04/22(土)13:58 ID:??? AAS
>178
読んで字の如くそうなる。
180: 2006/04/23(日)02:46 ID:??? AAS
いや、だからその、言葉の意味がわかにくいので・・・
実挙動としてどうなるのか、サンプルなどがあるとわかりやすいんですけど、、
181(1): 2006/04/24(月)11:05 ID:Z/7vX4oM(1) AAS
/hoge/modname/ReserveForm.do
↓
/hoge/modname/index.php?ReserveForm
といった感じにrewriteしたいのですが、どうもうまくいきません。
RewriteRule !hoge/([^/]+/)ReserveForm\.do $1/index.php
とやるだけで、internalエラー(無限ループ)になります。
modnameの部分を$1に置換するにはどうやればいいのでしょうか。
182: 2006/04/24(月)12:34 ID:??? AAS
>>181
modnameを置換する必要はないようだけど例文の間違いですか
183: 2006/06/12(月)02:24 ID:??? AAS
>>143 みたいなことしたいのですけど、やはり決定的な方法ってありませんかね。。。
上下前次1-新書関写板覧索設栞歴
あと 503 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 1.136s*