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 それではマターリ逝きましょう。
396 名前:nobodyさん [2009/09/21(月) 01:20:03 ID:c3AXI/Cy] /q/{任意の文字列} というリクエストを /q?query={任意の文字列} にリダイレクトしたいので、 RewriteRule ^/q/(.+)$ /q/?query=$1 としました。 しかし、{任意の文字列}は、ただの文字列の場合もあれば、 "?を含むURL"の場合もあり、後者の場合は?の前までしか取得できませんでした。 ちなみに"?を含むURL"の?の後のクエリは不定です。 RewriteCond %{QUERY_STRING} でなんとかなるかと思ったのですが、クエリがあったりなかったりする場合どのようにかいて良いのか わからなくなってしまいました。 どなたかご教示いただけないでしょうか。よろしくお願いします。
397 名前:396 [2009/09/21(月) 01:20:49 ID:c3AXI/Cy] 3行目は /q/?query={任意の文字列} の間違いです。 失礼しました
398 名前:nobodyさん mailto:sage [2009/09/21(月) 01:58:09 ID:???] QSAじゃ駄目なん?
399 名前:396 mailto:sage [2009/09/23(水) 16:17:35 ID:???] >>398 ありがとうございました
400 名前:nobodyさん [2009/10/08(木) 18:10:15 ID:Smfgyb+J] cgiでページを表示しているんですが、「index.cgi?hoge=num」の 「index.cgi」部分を常に表示しないようにしています。 しかしフォーム投稿を繰り返すとブラウザにこの「index.cgi」が 出てしまうことがあるので、常にこの文字列を省略する方法は無いかと調べ、 mod_rewriteでそれらしいことが出来るのではと思い、お尋ねしたく…。 現在 RewriteEngine on RewriteRule ^index\.cgi(.*)$ /$1 [R=301] と書くと「処理がループしています」というエラーが出てしまいます
401 名前:nobodyさん [2009/10/08(木) 19:09:43 ID:StP417kF] >>400 ポスト先をデレクトリにしれ
402 名前:400 mailto:sage [2009/10/08(木) 22:02:54 ID:???] >>401 回答どうもです。 ポスト先をディレクトリというのは 読み込むデータをディレクトリに入れとけ、ってことですか? だとしたら、データはdat形式でディレクトリに格納してあります
403 名前:nobodyさん mailto:sage [2009/10/09(金) 12:14:08 ID:???] >>402 ちゃうちゃう 今 <form action="./hoge/index.cgi" method="post">〜 と書いてるなら <form action="./hoge/" method="post"> と書けってこと。
404 名前:400 mailto:sage [2009/10/09(金) 17:40:46 ID:???] ありがとうございます とりあえずそう処理しておきました ちなみにmod_rewiteで修正する場合どう記述すればよいかわかりますか?
405 名前:nobodyさん mailto:sage [2009/10/10(土) 02:55:10 ID:???] お世話になります。Kernel 2.6.18, Apache 2.2.3, PHP 5.1.6 です。 拡張子なしで呼び出された URL を同じ場所にある PHP に向けたいんですが、 サブディレクトリを含めた汎用的な書き方は可能でしょうか? 次のように PATH_INFO がついている場合でも、それを維持してファイル名の 部分だけを書き換えたいのですが。 /basename → /basename.php /sub/directory/basename → /sub/directory/basename.php /basename/ → /basename.php/ /basename/path/info → /basename.php/path/info /sub/directory/basename/path/info → /sub/directory/basename.php/path/info サブディレクトリ、PATH_INFOに含まれる "/" の数は固定ではなく、途中に "." (拡張子風の ".") を含む可能性があります。 "basename.php" と "basename" のように拡張子の有無だけが異なるファイルや ディレクトリが同じ場所に存在することはありません。
406 名前:nobodyさん mailto:sage [2009/10/15(木) 01:28:34 ID:???] >>404 rewiteしなくてもAliasひとつでいけね? >>400 の設定でループするのは オプションにLつけて終わらせてないから延々と書き換えてる >>405 phpのファイル名が限定されるなら後方参照使うだけでいくつか書けばいけるだろ ttp://httpd.apache.org/docs/2.2/rewrite/rewrite_guide_advanced.html
407 名前:406 mailto:sage [2009/10/15(木) 01:29:52 ID:???] rewite->rewrite
408 名前:nobodyさん mailto:sage [2009/10/15(木) 01:53:59 ID:???] uwariteを思い出した。
409 名前:nobodyさん mailto:sage [2009/10/20(火) 22:25:35 ID:???] www.test.com/hoge/ を hoge.test.com/ にする書き方って どうすればいいでしょうか。てかそもそもこういうのって 出来るのかな?っていう。
410 名前:nobodyさん [2009/10/20(火) 23:43:21 ID:5GhHv22w] >>409 それmod_rewriteじゃなくてmod_proxyじゃね?
411 名前:nobodyさん mailto:sage [2009/10/21(水) 01:33:34 ID:???] 素直にサブドメイン作ろうぜ 作れないならあきらめようぜ
412 名前:409 mailto:sage [2009/10/21(水) 07:31:13 ID:???] どもです。hogeというホスト自体は設定してあるんです。 www.test.com/hoge1/ www.test.com/hoge2/ って感じにディレクトリが分かれていて バラバラのコンテンツが入っています。 これをhoge1.test.com/という風に別々のサイトのように見せたいと思っていてhttpd.confを 編集しました。 現状ですとwww.test.com/hoge1/でもhoge1.test.com/でも同じ内容が表示されるのですが SEO的によろしくないということで(スパム扱いされたりするとか)すべてhoge1.test.com/に 統一したいんです。 www有りとwww無しのアクセスを統一したりというのをmod_rewriteで出来たと思うので こういう書き換えも可能なのかなと。
413 名前:nobodyさん mailto:sage [2009/10/21(水) 07:35:56 ID:???] あ、補足です。 ディレクトリを移動しない理由を書いていませんでした。 CMSのCGIが入っているんので移動すると更新が出来なくなってしまうのです。
414 名前:nobodyさん mailto:sage [2009/10/21(水) 21:12:44 ID:???] SEO的にってことは、www.test.com/hoge1/fuga にアクセスしたら hoge1.test.com/fuga にリダイレクトされた方がいいんだよね。 hoge1 だけでよければ RewriteCond %{REQUEST_URI} ^/hoge1 RewriteRule ^/hoge1/(.*)$ hoge1.test.com/$1 [R] でいけそうだけど、www.test.com 以下のディレクトリ全部に 自動的に対応させたいってのはどうするのかな。 あと、こういう例題ドメインには example.com とかを使った方がいいよ。
415 名前:409 mailto:sage [2009/10/22(木) 16:25:16 ID:???] >>414 ありがとうございました。 各コンテンツの中は相対パスで書かれているのでその記述で対応可能でした。 example.com<了解っす。感謝。
416 名前:VnkTQPKasQlVsIBi mailto:7g5l0n3dn.@gmail.com [2009/10/23(金) 02:02:48 ID:???] Thanks to blogging and online social networking, they are quick to share their knowledge and opinions with one another. ,
417 名前:mABzoZWqufJAw mailto:ebdhcga97.@gmail.com [2009/10/23(金) 22:58:27 ID:???] The crush I could always fall back on, no matter how much time had passed. ,
418 名前:nobodyさん [2009/10/27(火) 02:04:24 ID:qLUEsO4U] ttp://hogemoge.com/check.phpを ttp://hogemoge.com/check/foo.jp/bar/baz/ でアクセスする方法をどなたか教えてください。 check.phpのみ適用されるようにしてください。 foo.jp/bar/baz/ のところはいろいろ変わります。 http://をhttp:/と解釈されないようにしてください。 checkの部分を変えてもcheck.phpに当たるようにもしてください。 よろしくお願いします。
419 名前:418 [2009/10/27(火) 02:26:00 ID:qLUEsO4U] 言い忘れ 2.2系で動くやつでお願いします
420 名前:nobodyさん mailto:sage [2009/10/27(火) 08:05:55 ID:???] >>418 やりたいことが意味不明なんだが、 http://を含むリクエストがあったら、それをcheck.phpに回すだけでよくないか? それなら、 RewriteRule ^.+/http(:|%3A)//.*$ /check.php [NC,L] あとは、$_SERVER['REQUEST_URI']をcheck.phpで確認する、でどうかね。 で、http://をhttp:/と解釈してしまうのはアプリケーション上のことであって、 mod_rewriteはそんな仕事はしない。 ブラウザでアクセスしようとするとコロンがエンコードされて%3Aで送ることがある
421 名前:nobodyさん mailto:sage [2009/10/27(火) 08:06:55 ID:???] あ、%はまずいかw
422 名前:418 [2009/10/28(水) 23:41:36 ID:VXoEwsZU] >>420 hogemoge.com/check/http://foo.jp/bar/baz/ とやってみたがNot Foundだった。なぜだろう Not Found The requested URL /check/foo.jp/bar/baz/ was not found on this server. って。
423 名前:nobodyさん mailto:sage [2009/10/29(木) 01:16:31 ID:???] ログ見た? ところで、 RewriteRule ^.* /check.php [NC,L] これなら、正常に表示される? で、順にhttpとか//とか試せば
424 名前:nobodyさん mailto:sage [2009/11/08(日) 13:58:43 ID:???] あげ
425 名前:nobodyさん [2009/11/08(日) 14:05:56 ID:35LWJ8zb] URLを書換えてから、クエリー部分をそのままphpに渡すつもりです localhost/input.php?action=submit&id=111 だったら、 request.php?action=input.php&query=(ここにaction=submit&id=111を示す文字列を書きたい) みたいな事をしたいです
426 名前:nobodyさん mailto:sage [2009/11/08(日) 14:14:37 ID:???] してくれ。
427 名前: ◆cCWqf4GI8E [2009/11/08(日) 18:49:10 ID:w74YnUY2] 425は偽。俺が本物か証明できるかどうかはわからんがトリップをつける IIJがアク禁になって当分投稿できなかった。すまない。 >>423 # cat /var/log/httpd/access_log 192.168.56.1 - - [28/Oct/2009:23:40:43 +0900] "GET /check/foo.jp/bar/baz/ HTTP/1.1" 404 314 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; ja; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729) Pathtraq/0.9" # cat /var/log/httpd/error_log [Wed Oct 28 23:40:43 2009] [error] [client 192.168.56.1] File does not exist: /var/www/html/check RewriteRule ^.* /check.php [NC,L]にしたらInternal Server Errorになった # cat /var/log/httpd/access_log 192.168.56.1 - - [29/Oct/2009:07:19:07 +0900] "GET /check/foo.jp/bar/baz/ HTTP/1.1" 500 613 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; ja; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729) Pathtraq/0.9" # cat /var/log/httpd/error_log [Thu Oct 29 07:19:07 2009] [error] [client 192.168.56.1] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace. なんかerror_logの方は記録できなかったっぽい?
428 名前:nobodyさん mailto:sage [2009/11/08(日) 19:44:01 ID:???] > RewriteRule ^.* /check.php [NC,L]にしたらInternal Server Errorになった それ、.htaccessに書いてる?httpd.confに書いてる? RewriteRuleで複数書き換えると無限ループすることがあるよ。 特に.htaccessのとき。
429 名前:nobodyさん mailto:sage [2009/11/09(月) 10:17:59 ID:???] 単発の質問を偽物扱いして退けようとするなんてかっこいいなw
430 名前:nobodyさん [2009/11/10(火) 07:44:07 ID:sgFUme3q] >>428 .htaccessに書いてた・・・ httpd.confなら <Directory /var/www/html> RewriteEngine On RewriteRule ^.* /check.php [NC,L] </Directory> 的なことを書けばいいんだよね?
431 名前:nobodyさん mailto:sage [2009/11/10(火) 19:51:31 ID:???] <Directory>に書いたら、ディレクトリコンテキストだから基本的に一緒 ディレクトリコンテキスト外で書いた方がループしない。 ループするのとは直接関係ないかもだけど、実ファイルがあったら書き換えないっていう指定も追加するといい RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} .ico$ [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L]
432 名前:nobodyさん mailto:sage [2009/11/18(水) 14:12:43 ID:???] 誘導されて来ました。 早速質問なのですが、 test.phpというファイルがリクエストされた場合に、index.php?page=test.phpにrewriteするにはどのようにすれば良いでしょうか? .htaccessに RewriteRule ^([0-9A-Za-z.]+)$ index.php?page=$1 [L] と記述してみたのですが、$_GET["page"]の値がindex.phpになってしまいます。 拡張子をtest.htmlにすると上手くいくのですが。。。 よろしくお願いします。
433 名前:nobodyさん mailto:sage [2009/11/18(水) 14:22:46 ID:???] index.phpへのアクセス → index.php?page=index.php になってるんじゃないの? RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([0-9A-Za-z.]+)$ index.php?page=$1 [L]
434 名前:nobodyさん mailto:sage [2009/11/18(水) 14:58:29 ID:???] >>432 あと、オプションをQSAにしてみたら?
435 名前:nobodyさん mailto:sage [2009/11/18(水) 18:51:42 ID:???] >>433-434 遅くなりまして申し訳ないです。 期待していた通りに動作しました。ありがとうございました。
436 名前:nobodyさん [2009/11/22(日) 04:53:44 ID:kXZj6gQw] 日本語をURLエンコードしているんだけど、それを半角英数に書き換え戻したいんだが。 無理だな。
437 名前:nobodyさん [2010/01/13(水) 21:00:23 ID:M9fqIs3k] 携帯端末以外からのアクセスをIPで弾いてるのだけど… PCからのアクセスの場合どこに飛ばしたものか苦慮してる。 そこでhtaccessの挙動がまだよくわからんのだけど、 htaccessって最後まで読まれてから、その全ての記述が実行されてるんでしょうか。 それとも、上から順番に実行していって、例えば RewriteRule で [L]を末尾につけた場合はそこで処理がとまったりするんでしょーか。
438 名前:nobodyさん mailto:sage [2010/01/13(水) 22:47:13 ID:???] 設定ファイルに書かれた順序を考慮して動作するモジュールがあるというだけで、 設定ファイル自体はスクリプトではないので最後まで読まれます。
439 名前:nobodyさん mailto:sage [2010/01/15(金) 15:21:11 ID:???] まさかApacheスレを探していて、質問しようと思っていた項目専用のスレがあるとは・・・ 今後宜しくです
440 名前:nobodyさん mailto:sage [2010/01/15(金) 15:32:27 ID:???] >>1 のリンクをザッとみて良く分からなかったのですが、 RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php の !\.(js|ico|gif|jpg|png|css)$ の部分の意味が良く分かりません PHPやJavaScriptとは違うようですし、正規表現のような気もしません これら! \ $の文字は言語で言うと何に分類されるのでしょうか? Apacheは専門的に勉強したことがないのですが、Apache専用の言語(演算子)なのでしょうか?
441 名前:440 mailto:sage [2010/01/15(金) 15:38:59 ID:???] ごめんなさい 普通に正規表現でした・・・
442 名前:nobodyさん [2010/01/21(木) 17:13:10 ID:r/4DT42h] RewriteCondの書き方でわかる方いたら教えてください 「base/pic」に入ってる画像のみ、rewriteしたくて、ほかはそのまま 表示したいのですが、どう書けばいいでしょうか? RewriteCond %{REQUEST_URI} !^.+\.(gif|jpg|jpeg|png)$ ですべての画像を弾くのはできそうなんですが…
443 名前:nobodyさん mailto:sage [2010/01/21(木) 17:53:48 ID:???] RewriteCond %{REQUEST_URI} base/pic.+\.(gif|jpe?g|png)$ /dummybase/pics0001.gif も条件に当てはまるけど。
444 名前:nobodyさん [2010/01/22(金) 14:19:51 ID:siFOym7C] >443 遅くなりましたが ありがとうございます!
445 名前:nobodyさん [2010/01/25(月) 08:26:20 ID:ckid/8q/] Redirect済みかどうかの判定ってできないんでしょうか? ブラウザ上では /main/ が / になるように、301でリダイレクトしたいんですけど、 内部的には / を /main/ にしたくて / でも /main/ でも同じページが返されるようにしたいんです。 現状 ↓ RewriteRule ^/*main/?(.*)/*$ $1 [L,R=301,QSA] RewriteRule ^$ main/ [L,QSA] これだと無限ループになるんで、上のルールがリダイレクト済みなら評価しないっていうことが できればなあと思っています。 内部リダイレクトはNSフラグによるサブリクエストにはならないようですし、 REMOTE_ADDRでアクセスした時のURLがわかればと思ったけど それも内部リダイレクトで上書きされてしまうようでお手上げになってしまいました。
446 名前:nobodyさん mailto:sage [2010/01/25(月) 15:37:30 ID:???] 設計の問題だと思うけど。 例えば/index.cgiとか何らかのスクリプトを経由して /main/index.htmlを表示するようにバイパスすればいーんじゃねーの。
447 名前:nobodyさん mailto:sage [2010/01/25(月) 15:58:47 ID:???] >>445 IS_SUBREQでどう?
448 名前:nobodyさん mailto:sage [2010/01/25(月) 19:13:21 ID:???] mod_headerでダミーのヘッダをセットして2度目かどうかをチェックっていうのがあったな。 クライアントが変態でそのヘッダを自前で付けてきたら違う動作するだろうけど。
449 名前:445 mailto:sage [2010/01/26(火) 20:06:20 ID:???] レスありがとうございます。 >>448 で一考したんですが、同等の考え方で、どうせQSAつけてるんだしって思って ?redirected=1みたいなクエリ付けてその判定を利用することにしました。
450 名前:nobodyさん [2010/02/03(水) 11:44:00 ID:yhcV776z] RewriteRule ^s/?f=([0-9A-Za-z)]+)$ /search/?f=$1 [L] と書いたら、表示は出来ますが関数が無効になっています。 RewriteRule ^s/([0-9A-Za-z)]+)$ /search/?f=$1 [L] の場合では、関数が有効になっています。 出来れば「?f=」の形にしたいのですが、どうすれば良いでしょうか?
451 名前:nobodyさん mailto:sage [2010/02/03(水) 11:58:29 ID:???] メタ文字だからじゃない?
452 名前:nobodyさん [2010/02/03(水) 12:28:24 ID:yhcV776z] >>451 「全くその通りだ」と思って下の様に変更したのですが、変化がありません。 何か間違っていますか? RewriteRule ^s/\?f=([0-9A-Za-z)]+)$ /search/?f=$1 [L]
453 名前:nobodyさん mailto:sage [2010/02/03(水) 13:26:05 ID:???] 変換前はどんなURLなん?
454 名前:nobodyさん mailto:sage [2010/02/03(水) 15:02:44 ID:???] URLの?以降はRuleではマッチしないから、CondでQUERY_STRINGとマッチしておいて Ruleで%数字の参照を使って値を引っ張るとさっさと教えてやれw
455 名前:nobodyさん mailto:sage [2010/02/03(水) 17:30:01 ID:???] 断る!
456 名前:nobodyさん mailto:sage [2010/02/03(水) 21:56:24 ID:???] と思ったけど・・・
457 名前:nobodyさん mailto:sage [2010/02/03(水) 23:16:17 ID:???] QSAフラグでもいいと思うよ Query String Appendって意味 って誰か教えてあげて
458 名前:nobodyさん mailto:sage [2010/02/04(木) 13:45:36 ID:???] /username/test.phpにアクセスしたときにサーバー上の/u/s/e/username/test.phpにアクセスさせるようにするにはどうすればいいでしょうか? 文字列を一文字ずつにディレクトリを分解しておきたいのです。
459 名前:nobodyさん mailto:sage [2010/02/04(木) 13:57:10 ID:???] (.)(.)(.)(.*) を $1/$2/$3/$4 とか
460 名前:nobodyさん mailto:sage [2010/02/04(木) 14:01:13 ID:???] ユーザ名ごとにディレクトリ作ってんのかw
461 名前:nobodyさん mailto:sage [2010/02/04(木) 14:58:04 ID:???] >>459 ありがとうございます ((.)(.)(.).*) $2/$3/$4/$1でいけました >>460 何かいい方法があれば教えてくださいませんか 一つのディレクトリに詰め込むとすると数万から数十万のファイルやサブディレクトリを作ることになりそうです
462 名前:nobodyさん mailto:sage [2010/02/04(木) 15:20:30 ID:???] それで何か問題あるの?
463 名前:nobodyさん mailto:sage [2010/02/04(木) 15:38:53 ID:???] 数万のファイルやディレクトリが1か所にあると 操作が非常に重くなって使いものにならなくなる
464 名前:nobodyさん mailto:sage [2010/02/04(木) 15:44:31 ID:???] GUIでやらなきゃいいんじゃね?
465 名前:nobodyさん mailto:sage [2010/02/04(木) 15:49:45 ID:???] CUIでの話をしているのだが
466 名前:nobodyさん mailto:sage [2010/02/04(木) 15:50:46 ID:???] まあ最近のOSのファイルシステムならあまり心配いらないのかもしれないね 環境書いてないからそんな前提入れられないけど
467 名前:nobodyさん mailto:sage [2010/02/04(木) 15:52:30 ID:???] どういう操作すると重くなるの?
468 名前:nobodyさん mailto:sage [2010/02/04(木) 15:53:40 ID:???] CUIどころかそのディレクトリのファイルの一つをプログラムから 読みに行こうとするだけで重くなる。SunOSの古いやつだけど もし持ってたらやってみるといい
469 名前:nobodyさん mailto:sage [2010/02/04(木) 15:54:49 ID:???] 新しくすれw
470 名前:nobodyさん mailto:sage [2010/02/04(木) 16:01:10 ID:???] ディレクトリ分けに賛成
471 名前:nobodyさん mailto:sage [2010/02/04(木) 17:24:09 ID:???] FC2のブログも画像ファイルはユーザ名の頭三文字を1字ずつディレクトリ作ってるね まさかURL上だけ分けてるってことはないだろうけど
472 名前:nobodyさん mailto:sage [2010/02/04(木) 18:51:28 ID:???] そんなときはReiserFS
473 名前:nobodyさん mailto:sage [2010/02/04(木) 19:13:17 ID:???] 例えばext2/3だとサブディレクトリの数は32,000個までという制限がある また、1ディレクトリのファイル数も実用上1万程度が限界点となっている そういうFSでは458みたいな工夫が必要になるわな
474 名前:nobodyさん mailto:sage [2010/02/04(木) 19:18:26 ID:???] ReiserFSは作者が奥さん殺しちゃったからな
475 名前:nobodyさん mailto:sage [2010/02/04(木) 21:52:42 ID:???] へー で?
476 名前:nobodyさん mailto:sage [2010/02/11(木) 12:27:02 ID:???] hoge.example.com/ にアクセスしたら /home/test/public_html/common/index.php?sub=hoge とするにはどうすればいいのでしょうか?
477 名前:nobodyさん mailto:sage [2010/02/11(木) 12:49:30 ID:???] ^/$ ??????
478 名前:nobodyさん mailto:sage [2010/02/11(木) 12:51:44 ID:???] oh, i'd been misled.
479 名前:nobodyさん mailto:sage [2010/02/12(金) 20:32:58 ID:???] I like watermelon.
480 名前:nobodyさん mailto:sage [2010/02/15(月) 21:20:36 ID:???] httpsのみrewriteできないんだけど、そんな設定とかあんのかな? これはhttp→httpsにしてくれるけど、 RewriteCond %{SERVER_PORT} !^443$ RewriteCond %{REQUEST_URI} (^/aaaa.php.*$) RewriteRule /(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} これはhttps→httpにしてくれない RewriteCond %{SERVER_PORT} ^443$ RewriteCond %{REQUEST_URI} !(^bbbb.php.*$) RewriteRule /(.*)$ %{HTTP_HOST}%{REQUEST_URI} httpにしてくれないどころか、適当なRewriteRule書いても反応して くれてないんで、RewriteCond %{SERVER_PORT} ^443$ で https を 捕まえてくれてないっぽい。{HTTPS} on|of でもダメでした。 なにがまずいのか、誰かボスケテ。
481 名前:nobodyさん mailto:sage [2010/02/15(月) 21:27:14 ID:???] %{SERVER_PORT}が443になってるかどうかは確認した?
482 名前:nobodyさん mailto:sage [2010/02/16(火) 09:02:50 ID:???] >>481 オス。 ssl.conf に Listen 443 httpd.conf に Listen 80 ssl.confはちゃんと読み込まれてる。 別件でパケットキャプチャ使ったんだけど、ちゃんと80、443で動いてるみたい。 なんだろうなー。よく解ってない人が管理してたサーバーの引継ぎで散々苦労 したんだけど、これが片付けば一段落つくのにドン詰まり;
483 名前:482 mailto:sage [2010/02/16(火) 09:10:16 ID:???] 念のためにPHPから echo $_SERVER['SERVER_PORT'] で出してみた。 http,https、それぞれ80,443 になってる。
484 名前:nobodyさん mailto:sage [2010/02/16(火) 09:12:16 ID:???] いや、そのrewriteルールに到達してない可能性があるんじゃない? rewriteLogを確認するか、 RewriteCond %{SERVER_PORT} ^443$ のところで、環境変数にでも入れて、その行に来てるかどうかを確認してみたらどうかなと。 よくあるのは、httpのvirtualhostとsslのvirtualhostを分けてて、 そもそも、sslのときはそのルールは適用されてないとかね。
485 名前:482 mailto:sage [2010/02/16(火) 10:34:15 ID:???] >>484 返答ありがと。 rewrite_log確認しました。 >480 の記述で、 httpの時は RewiteRule の apply pattern がふたつ出力された後に httpの時のRewriteCond の評価やってるけど、httpsの時は何も出力 されない。 RewiteRuleの時点でひっかかってくれてないな。 他の記述を全部とっぱらって、 ^443$ 関連の記述のみにしても、なにも 出力されてない。パッと見では https の時はガン無視して素通りされて るような感じなんだよなー。 人が設定したモンなんでもしやと思って virtualhost も確認してみたけど、 それは無かった。 なんだろう???
486 名前:nobodyさん mailto:sage [2010/02/16(火) 10:50:57 ID:???] > パッと見では https の時はガン無視して素通りされてるような感じなんだよなー。 その通りだろう
487 名前:nobodyさん mailto:sage [2010/02/17(水) 11:56:15 ID:???] httpsの時はallowoverrideがNoneとか
488 名前:482 mailto:sage [2010/02/17(水) 15:38:46 ID:???] >>487 .htaccess は使わずに httpd.conf に書いてる。
489 名前:nobodyさん mailto:sage [2010/02/17(水) 15:40:10 ID:???] じゃあ描いてる場所だな
490 名前:482 mailto:sage [2010/02/17(水) 16:40:58 ID:???] >>489 んー、conf.d とこのファイルも怪しいな。 も一回確認してくる =3
491 名前:nobodyさん [2010/02/26(金) 00:23:34 ID:GCPXDWut] /index.html /m/index.html htaccessを使用して 見た目上のURLは変えずに PCからなら /index.html 携帯からなら/m/index.html に飛ばすことは可能でしょうか? RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^(DoCoMo|KDDI|DDIPOKET|UP\.Browser|J-PHONE|Vodafone|SoftBank) RewriteRule ^$ /m/ [R] これだと携帯でアクセスすると見た目上のURLが/m/になってしまいます。 ご教授お願いします。
492 名前:nobodyさん mailto:sage [2010/02/26(金) 00:53:17 ID:???] それでいいんじゃないの
493 名前:nobodyさん mailto:sage [2010/02/26(金) 04:54:39 ID:???] [R] を取っ払えばよさそう
494 名前:nobodyさん [2010/03/25(木) 10:21:37 ID:Vmjt6F6A] mod_rewriteの設定について mod_rewriteの設定について 現在 *.test.example.comへのアクセスはドキュメントルートが/home/homepage/public_html/ になっています。 サブドメイン名でアクセスするディレクトリを変更したいです。 例) xxx.test.example.com → /home/homepage/public_html/xxx/ yyy.text.example.com → /home/homepage/public_html/yyy/ 以下のように設定してみたのですが、思い通りにいかない事がいくつかあります。 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} ^[a-z]+\.test\.example\.com$ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.+) %{HTTP_HOST}$1 [C] RewriteRule ^([a-z]+)\.test\.example\.com(.*)$ /$1/$2 </IfModule> xxx.test.example.com/index.html → ○ xxx.test.example.com/ → ×(index.htmlが表示されて欲しい) xxx.test.example.com/img/img.jpg → ×(/xxx/img/img.jpg は存在します) 分かる方よろしくお願いします。
495 名前:nobodyさん mailto:sage [2010/03/25(木) 11:17:26 ID:???] 最初のはDirectoryIndexで再投函されたあとの挙動だろうけど 下の方は、xxx以下にrewriteしてから、-fチェックをするようにしてみたら?
496 名前:nobodyさん mailto:sage [2010/03/28(日) 14:03:16 ID:???] それ、mod_vhost_alias使った方がいいんじゃね?