- 1 名前:nobodyさん [02/06/11 19:29 ID:wH0rV3+D]
- Apacheのモジュール『mod_rewrite』に関連するスレです。
基本的な内容は↓ページを読むこと。 japache.infoscience.co.jp/rewriteguide/ japache.infoscience.co.jp/japanese_1_3_6/manual/mod/mod_rewrite.html それではマターリ逝きましょう。
- 171 名前:nobodyさん mailto:age [2006/03/13(月) 14:37:04 ID:???]
- 166です。
よくわからなくなってきました。 RewriteEngineとRewriteRuleをコメントにしても /dir/hoge/nn.htmlでhoge.phpが呼び出されます。 別の次元でRewriteRuleが効いているようですが 心当たりなしでパニック中。
- 172 名前:nobodyさん mailto:sage [2006/03/13(月) 15:23:36 ID:???]
- >>171
落ち着いて access_log
- 173 名前:nobodyさん [2006/03/25(土) 15:58:49 ID:rUjENMuu]
- 通常ポートのSSLのhttp→httpsへのリダイレクトはうまくいったのですが、
別ポートにもう一つ設置した445ポートの場合、 www.example.com:445/ ↓ https://www.example.com:445/ にリダイレクトしたいのですが、RewriteRuleとRewriteRuleを どのように書いたらいいでしょうか?
- 174 名前:nobodyさん mailto:sage [2006/04/06(木) 05:28:11 ID:???]
- パラメーターに&が入ったときのmod_rewriteについて質問です・・
問題をvar_dumpを使って入ってきたパラメーターだけを表示するプログラムtest.phpにまとめてみました。 あと私のところで使ってる文字コードはUTF-8 <? var_dump($_SERVER["QUERY_STRING"]); echo "<br>\n"; var_dump($_GET); $param = urlencode("coffee&tea"); $directUrl = "hoge.go.jp/test.php?keyword=". $param; $rewriteUrl = "hoge.go.jp/". $param. "/"; echo "<br>\n"; echo "case 1 <a href=\"". $directUrl ."\">direct_url</a><br>\n"; echo "case 2 <a href=\"". $rewriteUrl ."\">rewrite_url</a><br>\n"; ?> で、.htaccessはこんな感じ RewriteEngine on RewriteBase / RewriteCond %{REQUEST_URI} ^/(.*)/$ RewriteRule ^(.*)/$ /test.php?keyword=$1 [L]
- 175 名前:nobodyさん mailto:sage [2006/04/06(木) 05:28:46 ID:???]
- case1のdirect_urlの場合hogehoge.go.jp/test.php?keyword=coffee%26teaを生成。
そのURL(自分自身なわけだけど)に飛ぶと以下の文字列を吐き出す string(20) "keyword=coffee%26tea" array(1) { ["keyword"]=> string(10) "coffee&tea" } これはOK。これにrewriteを噛ましたい。 問題のcase 2、rewrite_urlの場合hoge.go.jp/coffee%26tea/を生成。 飛ぶと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 (3) split uri=/test.php?keyword=coffee&tea -> uri=/test.php, args=keyword=coffee&tea そのURLに飛ぶと以下の文字列を吐き出す string(18) "keyword=coffee&tea" array(2) { ["keyword"]=> string(6) "coffee" ["tea"]=> string(0) "" } %26がmod_rewriteで&にデコードされちゃってteaが引数名になっちゃうよ・・・ 対策法ご存知の方教えてください・・・あるいはどこか設定が悪いのか・・・
- 176 名前:nobodyさん mailto:sage [2006/04/06(木) 08:11:14 ID:???]
- >>175
$rewriteUrl = "hoge.go.jp/". urlencode($param). "/";
- 177 名前:nobodyさん mailto:sage [2006/04/06(木) 08:59:39 ID:???]
- >>176
あー、なるほど、mod_rewriteにはurlencodeを2重に仕込むのね。 mod_rewriteを延々と弄っててきがつかんかった。 確認取ったところ上手く動きました。 この方法でやってみます。サンクス。 しかしmod_rewrite側での対応は設定はやはり難しいのかなぁ・・・ PHPに入ってくるエンコード状態と出て行くエンコード状態がrewrite使う使わずに関わらず 同じであれば見通しがいいかなーとか思ってたので。
- 178 名前:nobodyさん [2006/04/22(土) 02:52:49 ID:IkBNOhRq]
- フラグのQSAは、マニュアルに
>このフラッグは、置き換えるのではなく、存在するものに対して、 >rewrite エンジンが代用文字列にあるクエリー文字列にアペンドするようにします。 >rewite ルールでクエリー文字列にデータを追加したいときに使ってください。 とあるのですが、実挙動としてどのようになるのか、よくわかりません。 いったいどうなるのでしょうか?
- 179 名前:nobodyさん mailto:sage [2006/04/22(土) 13:58:50 ID:???]
- >178
読んで字の如くそうなる。
- 180 名前:nobodyさん mailto:sage [2006/04/23(日) 02:46:10 ID:???]
- いや、だからその、言葉の意味がわかにくいので・・・
実挙動としてどうなるのか、サンプルなどがあるとわかりやすいんですけど、、
- 181 名前:nobodyさん [2006/04/24(月) 11:05:56 ID:Z/7vX4oM]
- /hoge/modname/ReserveForm.do
↓ /hoge/modname/index.php?ReserveForm といった感じにrewriteしたいのですが、どうもうまくいきません。 RewriteRule !hoge/([^/]+/)ReserveForm\.do $1/index.php とやるだけで、internalエラー(無限ループ)になります。 modnameの部分を$1に置換するにはどうやればいいのでしょうか。
- 182 名前:nobodyさん mailto:sage [2006/04/24(月) 12:34:14 ID:???]
- >>181
modnameを置換する必要はないようだけど例文の間違いですか
- 183 名前:nobodyさん mailto:sage [2006/06/12(月) 02:24:24 ID:???]
- >>143 みたいなことしたいのですけど、やはり決定的な方法ってありませんかね。。。
- 184 名前:nobodyさん mailto:sage [2006/06/12(月) 05:04:50 ID:???]
- >>150 に書いてありましたね。。。
すみません。。。
- 185 名前:nobodyさん [2006/06/15(木) 09:05:30 ID:p9raRrGD]
- Apache1.3.3, Win2000SP2で、バーチャルホストでMovableTypeを運用してます。
Tagを、domain.tld/tags/tagname という形で作れるようにできたまではいいのですが、 as-is.net/blog/archives/001020.html を参考に .htaccessに RewriteEngine on RewriteRule ^tags/(.*)$ /cgi-bin/mt/mt-xsearch.cgi?blog_id=2&search_key=Tagwire&delimiter=,&search=$1 [QSA,L] と指定してるのですが404エラーが出てしまいます。 実際に飛んでほしい先は domain.tld/cgi-bin/mt/mt-xsearch.cgi?blog_id=2$search_key=Tagwire&delimiter=,$search=tagname です。 RewriteRule aaa.html bbb.html などと実際に存在するbbb.htmlに向けてaaa.htmlを呼び出してテストすると表示されますので mod_rewrite自体は動いてます。 見直す点等アドバイスいただければ幸いです。
- 186 名前:185 mailto:sage [2006/06/15(木) 09:07:01 ID:???]
- すみません、タイプミスありました。
実際に飛んでほしい先は domain.tld/cgi-bin/mt/mt-xsearch.cgi?blog_id=2$search_key=Tagwire&delimiter=,&search=tagname です。
- 187 名前:nobodyさん [2006/06/24(土) 20:11:15 ID:usPjod1h]
- www.hogehoge.com を hogehoge.com/main/
に書き換えたいのですが、 どうすればいいのですか?
- 188 名前:nobodyさん mailto:sage [2006/06/25(日) 09:19:26 ID:???]
- RewriteRule ^$ hogehoge.com/main/
- 189 名前:nobodyさん mailto:apache [2006/07/29(土) 17:15:32 ID:???]
- こんなことをしたいのですが、500 Internal Server Errorになります。
httpdはRHEL3のインストーラーにしたがって、そのままインストールしました。 www.domain.com/http://www.google.co.jp ↓ RewriteEngine on RewriteRule (..*) $1 [L] ↓ www.google.co.jp アドバイスをお願いします。
- 190 名前:nobodyさん mailto:sage [2006/08/01(火) 20:44:39 ID:???]
- >>189
R オプションでリダイレクトじゃまいか? [R,L]
- 191 名前:nobodyさん mailto:sage [2006/08/07(月) 16:21:58 ID:???]
- JVNVU#395412
Apache httpd の mod_rewrite モジュールにおけるバッファオーバーフローの脆弱性 ttp://jvn.jp/cert/JVNVU%23395412/index.html 何が悪かったの?
- 192 名前:nobodyさん [2006/08/19(土) 09:19:31 ID:AnvEHxgI]
- 鯖は逆引き設定にしてあります。
逆引きできない人を別アドレスへ飛ばしたいのですが 「REMOTE_HOSTが数字だけの時」という条件はどう書けばいいでしょうか? またproxy接続の人をmod_rewriteだけでなるべく効果的に(完全でなくてもいい) 別アドレスへ飛ばしたいのですがどの環境変数にRewriteCondをどう書けばいいでしょうか? 初心者ですがよろしくお願いします。
- 193 名前:nobodyさん [2006/08/29(火) 18:50:13 ID:qBkjqVym]
- example.com/hogehoge を
example.com/?hogehoge にリダイレクトさせるために、.htaccessに RewriteEngine on RewriteRule ^(.+)$ /?$1 [L] と書いたのですが、500エラー出てうまくいきません。 アドバイスお願いします・・・
- 194 名前:nobodyさん [2006/09/05(火) 21:59:51 ID:Hy3lSiWg]
- 質問です。
使っているサーバーにて、サーバー管理人さんにmod_rewriteをONにしてもらったのですが、 きちんと動作することを確認するサンプルphpや.htaccessをご存知ないですか? サーバー管理人さんが忙しいようでなかなか連絡がつきません、 どうにか動作確認をしたいのですが。。。
- 195 名前:nobodyさん mailto:sage [2006/09/05(火) 23:49:05 ID:???]
- >>194
動作確認の方法もわからずにそんなことをしてどうするつもりだ?
- 196 名前:nobodyさん [2006/09/05(火) 23:53:40 ID:Hy3lSiWg]
- >>195
とあるCMSプラグインを説明書に従ってインストールします。
- 197 名前:nobodyさん mailto:sage [2006/09/06(水) 16:18:20 ID:???]
- 管理人も大変だな
- 198 名前:nobodyさん mailto:sage [2006/09/06(水) 16:50:16 ID:???]
- >>197
そういわれると思ったよ。 標準的な他サーバー3つでプラグイン動いてるし、 プラグインの動作に必要なのはmod_rewriteのみだし。 CMSの動作は他にいれたサイトがずっと安定してるし。 こっちが大変だと思ってるけどもう実装は諦めた。 断る。
- 199 名前:nobodyさん [2006/09/06(水) 22:30:09 ID:ogWsQap5]
- ねぇ。誰かmod_rewriteエミュレータつくらね?
入力文字列(URL)を入力したら htaccessにしたがって どうURL変換されるか表示されるの。 そうすれば大幅に敷居が下がると思うんだけど。
- 200 名前:nobodyさん mailto:sage [2006/09/07(木) 09:25:25 ID:???]
- >>199
> mod_rewriteエミュレータ作ろうと思うんだけどどうよ? > 入力文字列(URL)を入力したら > htaccessにしたがって > どうURL変換されるか表示されるの。 > そうすれば大幅に敷居が下がると思うんだけど。 すっげぇ期待してます。
- 201 名前:nobodyさん mailto:sage [2006/09/07(木) 17:01:33 ID:???]
- 勝手に変わってるw
まあ便利だろうけどdebug onにすれば大体事足りるからね
- 202 名前:nobodyさん [2006/10/21(土) 03:17:29 ID:KzoqADxq]
- mod_jk2でapacheとtomcatを連携しています。
mod_rewriteを使って、tomcat上で動くstrutsを用いたアプリの URLを書き換えようとしているのですが、うまくいきません。。 (URLがrewriteされる前に、tomcatのほうに制御がいってしまい、うまく書き換えられない) どこを設定すればよいでしょうか?
- 203 名前:nobodyさん mailto:sage [2006/10/22(日) 17:32:12 ID:???]
- mod_rewriteエミュレータまだですか?
- 204 名前:nobodyさん mailto:sage [2006/10/22(日) 21:14:50 ID:???]
- 最近佐賀ネタでスレ違いの書き込みが増えている。
佐賀県庁・佐賀県警・談合・痴漢・情報漏洩などの内容だ。 銀行が潰れるとしたデマが回り騒ぎが起きたこともある。 このような書き込みは慎むべきだ。 被害防止のため常駐するスレに啓蒙してくれ。
- 205 名前:nobodyさん [2006/12/14(木) 00:36:31 ID:HPgduaQo]
- 坊やな質問させてもらうで酢
mod_rewriteのRewriteRuleでprofile.cgiからprofile.htmlへURLの書き換えをしようとしてるで酢 書いたルールが以下の通りで酢 RewriteRule ^(.*)\.cgi?(.*) $1.html?$2 [L] でも「profile.htmlなんてねぇよ」って狐火に言われるんで酢 mod_rewriteってURLだけの書き換えって出来ないんで酢か? 回答お願いしま酢
- 206 名前:nobodyさん mailto:sage [2006/12/14(木) 14:03:45 ID:???]
- クライアント側を騙すことは出来ない
- 207 名前:nobodyさん mailto:sage [2006/12/14(木) 18:14:19 ID:???]
- >>206
まじで酢か。 じゃあソース直接書き換えるしかないで酢ね。 ありがとうで酢
- 208 名前:nobodyさん mailto:sage [2006/12/15(金) 02:34:56 ID:???]
- cgi と html が逆なだけだろw
htmlにアクセスしたときcgiを実行するようにすればいいんだよ。
- 209 名前:nobodyさん mailto:sage [2006/12/16(土) 00:15:59 ID:???]
- .htacc(略
- 210 名前:nobodyさん mailto:sage [2007/03/03(土) 20:36:20 ID:???]
- すいません。
正規表現の質問なのですが、 mod_rewriteで、 "/media.*"以外へのリクエストをすべて"/index.php"へ飛ばすにはどうすれば良いでしょうか? 宜しくお願いします。
- 211 名前:nobodyさん mailto:sage [2007/03/04(日) 12:24:43 ID:???]
- >>210
RewriteEngine on RewriteCond %{REQUEST_URI} !^/media RewriteRule (.*) /index.php [L] !^/media の ^ はいらんかったかな…
- 212 名前:nobodyさん mailto:sage [2007/03/06(火) 13:08:27 ID:???]
- すいません。質問させてください。
example.com を www.example.com に リダイレクトさせたいのですが、https環境になるとうまくいきません。 https用に下記のように考えてみたのですが…。 RewriteEngine on RewriteCond %{SERVER_PORT} ^443 [AND] RewriteCond %{HTTP_HOST} ^example\.com RewriteRule (.*)$ https://www.example.com$1 [R=301,L] うまい方法はないでしょうか?
- 213 名前:212 mailto:sage [2007/03/06(火) 14:31:15 ID:???]
- 自己解決しました。
RewriteEngine on RewriteCond %{SERVER_PORT} ^443 RewriteCond %{HTTP_HOST} ^example\.com RewriteRule (.*)$ https://www.example.com$1 [R=301,L] SSL環境の設定ファイルが違いました。。。orz
- 214 名前:nobodyさん mailto:sage [2007/03/07(水) 01:06:15 ID:???]
- ([0-9A-Za-z]+) の部分にアンダーバーを入れたいのですが、_を入れてもうまくいきません。
RewriteRule ^([0-9A-Za-z_]+)/$ /index.php?mod=user&act=$1 [L] 半角英数字の正規表現にアンダーバーを入れるにはどうすればいいでしょうか?
- 215 名前:214 mailto:sage [2007/03/07(水) 01:09:00 ID:???]
- 自己レス
ただapacheを再起動していなかっただけぽ
- 216 名前:nobodyさん [2007/03/10(土) 17:38:22 ID:VXyj5Dh3]
- index.php?p=2&mode=m&url=www.example.com/
で m/2/wwww.example.com/ として表示させることは可能でしょうか?
- 217 名前:nobodyさん [2007/05/25(金) 00:26:35 ID:4kvXKUJV]
- ちょっと質問なんですが
example.com/hoge/hage/ を hogeというディレクトリが無ければ example.com/index.php にリダイレクト あれば example.com/hoge/ をそのまま表示させたいのです。 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] 上記のようにやってみたのですが、ディレクトリが存在しようが無かろうが すべてexample.com/index.phpにリダイレクトされてしまいました。 いったいどこが間違っているのでしょうか?
- 218 名前:nobodyさん mailto:sage [2007/05/25(金) 07:40:57 ID:???]
- >>216
可能 >>217 試したらちゃんと動作したので間違ってはいないと思う
- 219 名前:217 mailto:sage [2007/05/26(土) 06:46:54 ID:???]
- >>218
まじっすか。 apacheの設定に問題があるのかもしれません。 もうすこし調べてみます。ありがとうございました。
- 220 名前:nobodyさん [2007/05/26(土) 13:58:00 ID:llpEpcc0]
- 都合により mod_dir のスラッシュ補完が行えない環境なので、
mod_rewrite でスラッシュ補完を実現させたいと考えており、アドバイスをお願いしたいです。 ※説明が長くなってしまったので、本文をいくつかに分割して投稿いたします。 ○現在の状況 まず、下記の設定を追加する事で、UserDir にチルダ無しでアクセスが出来るようにしてあります。 RewriteEngine on RewriteRule ^/([a-zA-Z0-9_\-]+)/(.*) - [C] RewriteCond /home/$1/public_html/$2 -f [OR] RewriteCond /home/$1/public_html -d RewriteRule ^/([a-zA-Z0-9_\-]+)/(.*) /~$1/$2/ [PT] RewriteRule ^/([a-zA-Z0-9_\-]+)$ /~$1/ [PT] 上記 RewriteRule の影響で、 URLの最後にスラッシュが含まれていない場合、mod_dir のスラッシュ補完が行われません。 ・例 test ユーザのディレクトリでアクセスした場合 本来であれば下記のスラッシュ補完が行われるはずだが、実際にはスラッシュ補完が稼動しない。 www.xxxx.net/test を ↓ www.xxxx.net/test/ とさせたい ちなみに、チルダ有りでアクセスすると mod_dir のスラッシュ補完は問題なく行われる事を確認済です。 www.xxxx.net/~test を ↓ www.xxxx.net/~test/ となる。
- 221 名前:nobodyさん [2007/05/26(土) 13:59:31 ID:llpEpcc0]
- ○実現させたい事
UserDir のサブディレクトリへチルダ無しでアクセスした場合にも、スラッシュ補完が行われるようにしたい。 色々試した結果、下記のように書き換えると UserDir のルートディレクトリだけはスラッシュ補完が行えるようになりました。 ・設定 RewriteEngine on RewriteRule ^/([a-zA-Z0-9_\-]+)$ $1/ [R] RewriteRule ^/([a-zA-Z0-9_\-]+)/(.*) - [C] RewriteCond /home/$1/public_html/$2 -f [OR] RewriteCond /home/$1/public_html -d RewriteRule ^/([a-zA-Z0-9_\-]+)/(.*) /~$1/$2/ [PT] RewriteRule ^/([a-zA-Z0-9_\-]+)$ /~$1/ [PT] ・下記は動作するようになった。 www.xxxx.net/test ↓ www.xxxx.net/test/ ただし、サブディレクトリのスラッシュ補完はなされません。 www.xxxx.net/test/tmp が ↓ www.xxxx.net/test/tmp/ にならない。 サブディレクトリのスラッシュ補完を行う為には、どのように RewriteRule を書けばよろしいでしょうか。 アドバイスをお願い致します。
- 222 名前:nobodyさん mailto:sage [2007/05/29(火) 00:06:05 ID:???]
- RewriteRule ^/([\w_]+(/[\w_]+)*)$ $1/ [R]
なんかこんな感じじゃだめかね? 適当
- 223 名前:サレ [2007/06/21(木) 20:21:18 ID:yAR7j5RX]
- mod_rewriteを利用して特定のページアクセスの際にSERVER_NAMEとQUERY_STRING以降を除いて
大文字、小文字の区別なく表示させたいのですが、全くうまくいきません、いい案をお持ちの 方いたらご教示お願いしたいです。
- 224 名前:nobodyさん mailto:sage [2007/07/06(金) 23:52:39 ID:???]
- AにきたリクエストをBにリダイレクトしたいのですが
Cのようにリダイレクト後のURLに「?t=aaa&k=bbb」がくっついてきちゃいます。 これがくっついてこないようにするにはどうしたらいいのでしょうか。 A:/search.html?t=aaa&k=bbb B:/search/aaa/bbb/index.html C:/search/aaa/bbb/index.html?t=aaa&k=bbb RewriteCond %{REQUEST_URI} ^/search\.html$ RewriteCond %{QUERY_STRING} ^t=(.+)&k=(.+)$ RewriteRule ^.*$ /search/%1/%2/index.html [R,L]
- 225 名前:nobodyさん [2007/07/12(木) 15:02:09 ID:5UK7fMyc]
- RewriteEngine on
RewriteCond ${REQUEST_URI} !-d RewriteRule ^(.*hoge)/([0-9]+)/$ $1?number=$2 [L] これでURL変換はうまくいってるんですが、ブラウザのアドレス欄には変換後の http://〜hoge/?number=10 というのが表示されてしまいます。 これを変換前のURLのままにしておくにはどうすれば良いのでしょうか?
- 226 名前:nobodyさん mailto:sage [2007/07/12(木) 18:23:43 ID:???]
- aaa.example.com/をexample.com/~aaa/に書き換えるにはどうしたらよいでしょうか?
aaa.example.comとexcample.comは同一のサーバーです。
- 227 名前:nobodyさん mailto:sage [2007/07/17(火) 16:47:55 ID:???]
- >>266
ID。 aaaは定数? それともwwwとwww2だとか幾つかある?
- 228 名前:nobodyさん mailto:sage [2007/07/19(木) 00:53:42 ID:???]
- 質問です。よろしくお願いします。
RewriteRule /(.+)\.(.+)$ /$1.A.$2 既存の拡張子の前に.Aを挿入しようとしていますが、$2に前置するピリオドが 悪さしているらしく、うまく動きません。どうすればよいでしょうか。
- 229 名前:228 [2007/07/19(木) 01:05:11 ID:k0bvHpUP]
- .を_などにすると意図したように動きます。といいつつあげます。
- 230 名前:nobodyさん mailto:sage [2007/07/19(木) 01:50:07 ID:???]
- とりあえずピリオドの前には常に¥マークを付けるんだ
- 231 名前:228 mailto:sage [2007/07/19(木) 02:11:07 ID:???]
- \つけてもだめでした。その前に、.$1は問題ないんですが、
.はそもそもエスケープする必要あるのが普通でしょうか。 .Aの挿入はおいといて、$1.$2もだめでしたが、$2.$1は大丈夫でした。 何か他の理由でしょうか。 とりあえず、$2にピリオドごと格納して解決しました。 が、なぜ上記のがだめなのか気になって夜も眠れません。
- 232 名前:228 mailto:sage [2007/07/19(木) 23:31:43 ID:???]
- 全然、別の問題のようでした。何かがループされてしまってたようです。
Rewriteの動きをよく理解できてないようですので勉強します。
- 233 名前:nobodyさん mailto:sage [2007/08/12(日) 03:55:49 ID:???]
- mod_rewrite で下記のようなことは可能でしょうか?
example.com/1/ ⇒ example.com/index.php?a=1 example.com/1/b/2/ ⇒ example.com/index.php?a=1&b=2 example.com/1/b/2/c/3/ ⇒ example.com/index.php?a=1&b=2&c=3 example.com/1/b/2/c/3/d/4/ ⇒ example.com/index.php?a=1&b=2&c=3&d=4 ・ ・ ・ パラメータは可変長で考えています。 ループを使ってすっきり書ければいいと思うのですがなかなか思いつきません。 よろしくお願いします。
- 234 名前:nobodyさん [2007/08/12(日) 03:59:41 ID:YzqJNCOc]
- age
- 235 名前:nobodyさん mailto:sage [2007/08/12(日) 12:45:54 ID:???]
- >>226
なんでそんなことするんだよwwwと思ったけどなるほど お前頭いいな ちょっと考えてみるわ
- 236 名前:JAPU ◆lVJAPUTeX. mailto:sage [2007/08/12(日) 19:58:53 ID:???]
- >>233
RewriteRule ^(/.*/)([^/]+)/([^/]+)/$ $1?$2=$3 [QSA,N] ※1 RewriteRule ^/([^/]+)/$ /test/index.cgi?a=$1 [QSA] ※2 "QSA" (query string append) フラグは、書き換え後の QUERY_STRING 部分のみ "追加" の扱いとします。 "N" (next) フラグは、先頭からルールを再実行します。 path = "/1/b/2/c/3/", QUERY_STRING="" ※1のルール適用 path = "/1/a/2/", QUERY_STRING="c=3" ※1のルール適用 path = "/1/", QUERY_STRING="b=2&c=3" ※2のルール適用 path = "/index.cgi", QUERY_STRING="a=1&b=2&c=3"
- 237 名前:nobodyさん [2007/08/13(月) 01:26:53 ID:xOKpCYRV]
- >>236
レスどうもです! ちょっとうまく動かなかったので最初の "/" をとってこんな風にしてみました。 RewriteRule ^(.*/)([^/]+)/([^/]+)/$ $1?$2=$3 [QSA,N] RewriteRule ^([^/]+)/$ index.php?a=$1 [QSA] でも、下記のように変換されてしまって無限ループになってしまいました。 何が悪いんでしょうか? 1/b/2/c/3/ -> 1/b/2/?c=3 1/b/2//b/2/c/3/ -> 1/b/2//b/2/?c=3 1/b/2//b/2//b/2/c/3/ -> 1/b/2//b/2//b/2/?c=3 1/b/2//b/2//b/2//b/2/c/3/ -> 1/b/2//b/2//b/2//b/2/?c=3 ・ ・ ・
- 238 名前:JAPU ◆lVJAPUTeX. mailto:sage [2007/08/13(月) 02:57:50 ID:???]
- .htaccess に書くと、たしかにそうなった。
httpd.conf なら問題無いんだが… 途中、こんなヘンテコな変換されるのが謎。 add path-info postfix: /usr/local/www/data/1/b/2/ -> /usr/local/www/data/1/b/2//b/2/c/3/ # ちなみに Apache 1.3.37
- 239 名前:nobodyさん mailto:sage [2007/08/13(月) 03:09:59 ID:???]
- .htaccessはRewriteBaseが必須。
- 240 名前:JAPU ◆lVJAPUTeX. mailto:sage [2007/08/13(月) 07:59:33 ID:???]
- mami# grep ^DocumentRoot /usr/local/etc/apache/httpd.conf
DocumentRoot "/usr/local/www/data" mami# pwd /usr/local/www/data mami# cat .htaccess RewriteEngine on RewriteBase /usr/local/www/data RewriteRule ^(.*/)([^/]+)/([^/]+)/$ $1?$2=$3 [QSA,N] RewriteRule ^([^/]+)/$ index.cgi?a=$1 [QSA] これじゃまずいんだっけ。
- 241 名前:nobodyさん [2007/08/13(月) 11:17:43 ID:d8YeW0fj]
- 問題なさそうだけど。。。
- 242 名前:nobodyさん mailto:sage [2007/08/13(月) 14:05:05 ID:???]
- RewriteBaseにセットする値はURL-path。
- 243 名前:JAPU ◆lVJAPUTeX. mailto:sage [2007/08/14(火) 01:02:27 ID:???]
- >>242
たしかにマニュアルみたらそう書いてありました。 が、RewriteBase / でも結果は変わらず。
- 244 名前:nobodyさん [2007/08/14(火) 01:45:16 ID:sYc3cRby]
- 変換ログが怪しすぎるし、バグなのかなぁ。
- 245 名前:nobodyさん [2007/08/23(木) 14:25:41 ID:oRh+in4w]
- >>233 と似てるんだけど、こういうのってどうやれば実現できますか?
1.example.com/ ⇒ example.com/index.php?a=1 1.example.com/b/2/ ⇒ example.com/index.php?a=1&b=2 1.example.com/b/2/c/3/ ⇒ example.com/index.php?a=1&b=2&c=3 1.example.com/b/2/c/3/d/4/ ⇒ example.com/index.php?a=1&b=2&c=3&d=4
- 246 名前:nobodyさん [2007/08/25(土) 21:04:57 ID:mIpqfkg/]
- RewriteRule でどのパターンにも一致しない場合のルールでどうやればよいでしょうか?
- 247 名前:nobodyさん mailto:sage [2007/08/26(日) 05:40:50 ID:???]
- YomisearchCGI版のカテゴリを静的化したいのですが、
参考になるページご存じの方教えて下さい yomi.cgi?page=1&mode=kt&sort=ac_new&kt=01_03 ↓ /p1/kt/ac_new/01_03.html こんな感じにしたいです (もしくはもっと短く)
- 248 名前:nobodyさん [2007/08/26(日) 11:52:46 ID:6oSQJEbU]
- >>247
このスレみるだけでじゅうぶんでは。 どこを難しいと感じているのかわからないし。
- 249 名前:nobodyさん mailto:sage [2007/10/03(水) 14:46:52 ID:???]
- すみません質問させてください
WindowsXP SP2 Apache2.2.3でローカル鯖たててます。 mod_rewriteを使えるようにしたいのですが ・modulesディレクトリにmod_rewrite.soがあることを確認 ・httpd.confのLoadModule setenvif_module modules/mod_rewrite.soのコメントアウトをはずす ・Apache再起動 の手順でやってもmod_rewriteが有効になりません。 任意のディレクトリに RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([0-9A-Za-z)]+)\.html$ index.php?$1 [L] って書いた.htaccess置いてるんですが404エラーになってしまって。 同じものをwebサーバにうpすると普通に動作するので Apacheの設定が出来てないんだと思うのですが自分では対処不能ですorz
- 250 名前:nobodyさん mailto:sage [2007/10/03(水) 15:17:11 ID:???]
- RewriteEngine On
RewriteRule .* index.php まずこうしてmod_rewrite、文法どちらに問題があるのか切り分けてみなよ。 文法が間違ってるなら RewriteLog /var/log/httpd/rewrite_log RewriteLogLevel 9 としてログを見ながら原因を探る RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f でいけるかもしれない。
- 251 名前:nobodyさん mailto:sage [2007/10/03(水) 15:34:01 ID:???]
- >>250
やってみたんですがあいかわらず404です… 文法間違いじゃなくてやっぱApacheの設定ミス…? インストールしなおした方がいいんでしょうか。
- 252 名前:nobodyさん mailto:sage [2007/10/03(水) 17:31:53 ID:???]
- .htaccessで使うときはRewriteBaseが必須。
- 253 名前:nobodyさん mailto:sage [2007/10/03(水) 18:16:18 ID:???]
- う〜ん、
RewriteEngine on RewriteBase /hoge/hoge/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([0-9A-Za-z)]+)\.html$ index.php?$1 [L] でやってみましたがうまく行きませんorz .htaccess書き換えてもApacheの再起動はしなくていいんですよね?
- 254 名前:nobodyさん mailto:sage [2007/10/25(木) 12:12:54 ID:???]
- googleの様な検索URL設定を自分のサイトでも実現したいのですが・・・うまくいきません。
例)ttp://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=2ch&num=50 ○現在の.htaccessの設定 RewriteEngine on RewriteRule ^([0-9A-Za-z)]+)$ /index.php?mode=$1 RewriteRule ^([0-9A-Za-z)]+)\?(..*)$ /index.php?mode=$1&$2 ○検索画面TOPページ(キーワードや表示数を設定し、検索ボタンで検索開始) アクセス ttp://www.hogehoge.jp/search 内部 index.php?mode=search ←実現済み ○検索結果表示ページ(検索TOPで設定した検索結果を表示) アクセス ttp://www.hogehoge.jp/search?q=2ch&num=50 内部 index.php?mode=search&q=2ch&num=50 ←これがうまくいかない q=キーワード, num=検索表示数 問題は、検索結果表示ページでGET値が渡されず、"index.php?mode=search"となってTOPへ戻ってしまうこと。 mod_rewriteって"?"以降を無視してしまうのでしょうか? だったら、googleは"search?***"をどう実現してるのでしょうか? どうかご意見ください。
- 255 名前:nobodyさん mailto:sage [2007/10/25(木) 15:05:20 ID:???]
- >>254
>mod_rewriteって"?"以降を無視してしまうのでしょうか? 正解 >だったら、googleは"search?***"をどう実現してるのでしょうか? searchがスクリプトファイル名 ファイルに絶対拡張子が必要なわけではない
- 256 名前:254 mailto:sage [2007/10/25(木) 15:16:18 ID:???]
- まあrewriteはなんでも出来るから
RewriteRule ^([0-9A-Za-z)]+)\?(..*)$ /index.php?mode=$1&$2 は RewriteRule ^([0-9A-Za-z)]+)$ /index.php?mode=$1&%{QUERY_STRING} で出来るかも
- 257 名前:254 mailto:sage [2007/10/25(木) 17:38:26 ID:???]
- >>255,256
[QSA]を付ける事で問題を解決できました。素早い回答ありがとうございます。お騒がせしました。
- 258 名前:nobodyさん [2007/10/27(土) 00:37:29 ID:zm9qnQ5v]
- 女性にmod_rewriteの説明をする時って最高にセクハラできるよね('-'*)
「このように性器表現で痴漢すれば、性的なURLでアクセスできるようになります」
- 259 名前:nobodyさん mailto:sage [2007/10/27(土) 00:38:51 ID:???]
- ほう。
- 260 名前:nobodyさん [2007/10/27(土) 18:02:43 ID:PPo48ltM]
- ほうほう
- 261 名前:nobodyさん mailto:sage [2007/10/28(日) 09:25:28 ID:???]
- > 性的なURLでセクロス
( ´ω`) … (⊃⊂) (´ω`;)⊃ アウアウ!! ⊂ミ⊃ ) / ヽ
- 262 名前:nobodyさん [2007/11/14(水) 12:06:40 ID:ng0LolU1]
- www.hoge.jp/c00000001/
にアクセスした場合に www.hoge.jp/search.php?cid=00000001 を実行させる環境を実現しようと思い RewriteRule ^\/c([0-9]+)/?$ /ctgr_search.php?cid=$1 と書いているんですが www.hoge.jp/c00000001 でアクセスすると正常に動作するのですが、 www.hoge.jp/c00000001/ と最後にスラッシュを入れると404エラーになってしまいます スラッシュがついていてもついていなくても 同じ動作にしたかったんですけど 何が間違ってるのか見当もつかないんですが、分かる方 教えて下さい><
- 263 名前:nobodyさん mailto:sage [2007/11/19(月) 23:48:17 ID:???]
- / があると index.html の自動補完が先に動くのではないかと。
/index.html まで書いたり、 ファイルが無いことを条件にもっとゆるいrule を作ってみてはどうでしょう? RewriteCond %{REQUEST_FILENAME} !-f [OR] RewriteCond %{REQUEST_FILENAME} !-d RewriteRule * /ctgr_search.php?cid=$1
- 264 名前:nobodyさん mailto:sage [2007/11/20(火) 10:55:41 ID:???]
- %2f問題。
- 265 名前:nobodyさん [2007/11/29(木) 11:22:36 ID:oBkh+T4G]
- すみません、質問させてください。
/から始まる絶対パスで開発を進めていたのですが、一時的にサブフォルダ内で 動作させる必要が出てきました。 /img/top/title.gif" のように記述しているリンクをRewriteを使い、 /hoge/img/top/title.gif" と変更することってできますか? ご存知の方、教えて頂けると助かります。
- 266 名前:nobodyさん mailto:sage [2007/11/29(木) 21:56:07 ID:???]
- mod_rewriteは何か出来ると思ってるんだw
環境もあるみたいだし、やってみれ
- 267 名前:265 [2007/11/30(金) 10:28:04 ID:cjIfOe/2]
- >266
いろいろ調べて、こんか感じでそれっぽい感じにできました。 Options +FollowSymLinks RewriteEngine on RewriteBase / RewriteCond %{HTTP_REFERER} hoge.jp/hoge/(.*)$ RewriteRule (.*) /hoge/$1 [R,L]
- 268 名前:nobodyさん mailto:sage [2007/12/02(日) 08:43:40 ID:???]
- それだとある程度自由にローカルのファイルにアクセス出来るから
Request_URIで判別した方がいいよ
- 269 名前:nobodyさん mailto:sage [2007/12/20(木) 18:10:10 ID:???]
- example.com/wiki/test/test.html
のようなリクエストを受け取った時に、 /wiki/test/test.html があれば表示、なければ /wiki/html/test/test.html があれば表示、なければ /wiki/index.php?test/test を表示 というようにしたいんだけど、どうやったらいいのでしょう? 特に /wiki/test/test.html をうけとって、/wiki/ と test/test.html に分離して RewriteCond で /wiki/html/test/test.html -f といきたいんだけど、それをどうやったらできるのかわからないのです。 /wiki/ がなく、ドメイン直下ならば、分離しないですむので、 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{DOCUMENT_ROOT}html%{REQUEST_URI} -f RewriteRule .* %{DOCUMENT_ROOT}html%{REQUEST_URI} [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.+)\.html$ index.php?$1 [QSA,L] こんなかんじでいけるのですが。
- 270 名前:nobodyさん mailto:sage [2007/12/20(木) 21:19:10 ID:???]
- RewriteEngine on
RewriteBase /wiki RewriteRule ^(.*)\.html$ $1 [C] RewriteCond %{REQUEST_FILENAME}.html !-f RewriteRule ^(.*)$ /wiki/index.php?$1 [L] とやって example.com/wiki/test1/test2.html のようにアクセスしてみたら みたら、index.php の引数に test1/test2 ではなく test1/test2/test2.html という値が入ったのですが、これは一体どういう理屈でしょうか? test1/test2 に分離できるかと思ったのですが。
- 271 名前:nobodyさん mailto:sage [2008/01/16(水) 16:18:40 ID:???]
- RewriteRule ^/(.+)/(.*) /$1/index.php?i=$2
ってやったら /aa/bb/ は /aa/index.php?i=bb になったけど /aa/bb/cc は /aa/index.php?i=bb/cc 変わらなかったんだけど/はだめなの?
|

|