【Apache】mod_rewriteについて語るスレ (686レス)
1-

382: 2009/08/24(月)13:23 ID:TLZIhZKK(1) AAS
フレームワークをつかってて以下のような書き方をしてるんですが、
外部リンク:hoge.hoge.com
にアクセスした場合、ブラウザだと表示されますが、
wgetをしてみると404になってしまいます。そのせいか、Yahooにクロールリクエストしようとしても
404ですといわれてしまいます。どこがおかしいかわかりますでしょうか?
外部リンク:hoge.hoge.com
は実際は
外部リンク:hoge.hoge.com引数/
みたいな感じになってます

<IfModule mod_rewrite.c>
RewriteEngine On

# uncomment the following line, if you are having trouble
# getting no_script_name to work
RewriteBase /

# we skip all files with .something
RewriteCond %{REQUEST_URI} \..+$ #
RewriteCond %{REQUEST_URI} !\.html$
RewriteRule .* - [L]

# we check if the .html version is here (caching)
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f

# no, so we redirect to our front web controller
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
383: 2009/08/25(火)19:10 ID:X6yGpm6m(1) AAS
ごめん、rewriteは問題なさげぽかった
384: 2009/08/27(木)22:20 ID:t3eEdAjR(1) AAS
外部リンク:hoge.com西村ひろゆき/2ch管理人

外部リンク[php]:hoge.com西村ひろゆき&site=2ch管理人
に飛ばそうとしています。

RewriteRule ^/([^/.]+?)/?(/.*)?$ /index.php?name=$1&site=$2 [L]

としていますがapacheの再起動をするとうまくいきません。。。
RewriteRule ^/([^/.]+)/?(/.*)?$ /index.php?name=$1&site=$2 [L]
スラッシュの前の最小マッチに必要な?をぬくとapache再起動をしとりあえず
動くのですが、、最小マッチしないと一部うまくいかないため、
どうすればmod_rewriteで最小マッチできるか教えてください
m(_ _)m
385: 2009/08/27(木)22:42 ID:??? AAS
apache2.0と2.2で処理変わった?
同じ式で悪禁がうまくいかないんだけど死ね
386
(1): 2009/09/03(木)20:22 ID:54RqrMPZ(1/2) AAS
301でサイト移動をする場合に関数に色々な値があるのをそれぞれリダイレクトさせたい場合
一挙に書くにはどうすればいいでしょうか?

1つ1つ書くと下記のようなのを1つにしたいです。

Redirect 301 /index.php?a=1 "外部リンク[php]:www.example.jp"
Redirect 301 /index.php?a=2 "外部リンク[php]:www.example.jp"
Redirect 301 /index.php?a=3 "外部リンク[php]:www.example.jp"
 ・
 ・
 ・
Redirect 301 /index.php?a=a1 "外部リンク[php]:www.example.jp"
Redirect 301 /index.php?a=b2 "外部リンク[php]:www.example.jp"
Redirect 301 /index.php?a=c3 "外部リンク[php]:www.example.jp"
 ・
 ・
 ・
387
(1): 2009/09/03(木)21:19 ID:??? AAS
>>386
君、質問する前に少しは人の忠告を聞きなさい

別スレで親切に諭してくれた人がかわいそうだ
388: 2009/09/03(木)22:03 ID:54RqrMPZ(2/2) AAS
>>387
ちゃんと聞いてるよ。example.jpに直してるだろ。(ココは妥当な意見だと判断したので)
「マルチ質問扱いされて厄介な・・・」って部分は
そんなのどうでもイイと判断して無視した。

聞く立場だからって、言われたことに何でも従う訳じゃない。
自分で考えて「合理的だ」「その通り」と感じた意見だけに従う。
389: 2009/09/03(木)22:48 ID:??? AAS
あっそ
390: 2009/09/14(月)02:55 ID:??? AAS
ルート直下にaaaというディレクトリがあり、このディレクトリ以下のディレクトリにへのアクセスをルートのindex.phpに飛ばしたいのですが、
aaaに以下のように書いた.htaccessを置いてみたところ、外部リンク:hex12316の場合はうまくいくのですがhttp:/〜/
aaa/の場合がうまくいきません。
どうしたらいいでしょうか?

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule . /index.php [L]
391: 2009/09/14(月)03:41 ID:??? AAS
RewriteCond %{REQUEST_URI} ^/aaa
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . /index.php [L]
をルートの.htaccessに追記したところ成功しました
置く場所からして間違ってましたねすみません…
392: 2009/09/14(月)20:33 ID:??? AAS
質問です。
mod_rewriteを使うと以下のことができるでしょうか?

外部リンク:example.comにアクセス。
サーバ内部では、外部リンク[cgi]:example.comにアクセス。
ただし、ブラウザのURLは外部リンク:example.comのまま。

ページ内のリンクをクリック。
サーバ内部では外部リンク[cgi]:example.comにアクセス。
ただし、ブラウザのURLは外部リンク:example.comのまま。

ということが可能なんでしょうか?
つまり、ブラウザで表示するURLだけを書き換える、ということです。
393: 2009/09/14(月)22:13 ID:??? AAS
mod_rewriteだけじゃ無理だと思う。
最初に外部リンク:example.comにアクセスがあった時、top.cgiとnext.cgiのどっちへのアクセスかどうやって振り分ける?

外部リンク:example.comへのアクセス全部index.cgi行きにして、何かの環境変数(セッションとかリファラとか)top.cgiの処理か
next.cgiの処理を内部的に(includeとか)で呼ぶぐらいしかできないと思うよ。
394: 2009/09/14(月)23:21 ID:??? AAS
なるほど。top.cgiはディレクトリインデックスのイメージでした。
逆はできるみたいですけどね。URLを変えずに表示ページを変える。
395: 2009/09/15(火)11:32 ID:??? AAS
ん?
逆だと「表示されるページを変えずにURLを変える」になると思うが。
396
(2): 2009/09/21(月)01:20 ID:c3AXI/Cy(1/2) AAS
/q/{任意の文字列}
というリクエストを
/q?query={任意の文字列}
にリダイレクトしたいので、
RewriteRule ^/q/(.+)$ /q/?query=$1
としました。
しかし、{任意の文字列}は、ただの文字列の場合もあれば、
"?を含むURL"の場合もあり、後者の場合は?の前までしか取得できませんでした。
ちなみに"?を含むURL"の?の後のクエリは不定です。

RewriteCond %{QUERY_STRING}
でなんとかなるかと思ったのですが、クエリがあったりなかったりする場合どのようにかいて良いのか
わからなくなってしまいました。

どなたかご教示いただけないでしょうか。よろしくお願いします。
397: 396 2009/09/21(月)01:20 ID:c3AXI/Cy(2/2) AAS
3行目は
/q/?query={任意の文字列}
の間違いです。
失礼しました
398
(1): 2009/09/21(月)01:58 ID:??? AAS
QSAじゃ駄目なん?
399: 396 2009/09/23(水)16:17 ID:??? AAS
>>398
ありがとうございました
400
(4): 2009/10/08(木)18:10 ID:Smfgyb+J(1) AAS
cgiでページを表示しているんですが、「index.cgi?hoge=num」の
「index.cgi」部分を常に表示しないようにしています。

しかしフォーム投稿を繰り返すとブラウザにこの「index.cgi」が
出てしまうことがあるので、常にこの文字列を省略する方法は無いかと調べ、
mod_rewriteでそれらしいことが出来るのではと思い、お尋ねしたく…。

現在
RewriteEngine on
RewriteRule ^index\.cgi(.*)$ /$1 [R=301]

と書くと「処理がループしています」というエラーが出てしまいます
401
(1): 2009/10/08(木)19:09 ID:StP417kF(1) AAS
>>400
ポスト先をデレクトリにしれ
402
(1): 400 2009/10/08(木)22:02 ID:??? AAS
>>401
回答どうもです。
ポスト先をディレクトリというのは
読み込むデータをディレクトリに入れとけ、ってことですか?
だとしたら、データはdat形式でディレクトリに格納してあります
403: 2009/10/09(金)12:14 ID:??? AAS
>>402
ちゃうちゃう


<form action="./hoge/index.cgi" method="post">〜
と書いてるなら
<form action="./hoge/" method="post">
と書けってこと。
404
(1): 400 2009/10/09(金)17:40 ID:??? AAS
ありがとうございます
とりあえずそう処理しておきました

ちなみにmod_rewiteで修正する場合どう記述すればよいかわかりますか?
405
(1): 2009/10/10(土)02:55 ID:??? AAS
お世話になります。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
(1): 2009/10/15(木)01:28 ID:??? AAS
>>404
rewiteしなくてもAliasひとつでいけね?
>>400の設定でループするのは
オプションにLつけて終わらせてないから延々と書き換えてる

>>405
phpのファイル名が限定されるなら後方参照使うだけでいくつか書けばいけるだろ
外部リンク[html]:httpd.apache.org
407: 406 2009/10/15(木)01:29 ID:??? AAS
rewite->rewrite
408: 2009/10/15(木)01:53 ID:??? AAS
uwariteを思い出した。
409
(3): 2009/10/20(火)22:25 ID:??? AAS
www.test.com/hoge/ を hoge.test.com/ にする書き方って
どうすればいいでしょうか。てかそもそもこういうのって
出来るのかな?っていう。
410: 2009/10/20(火)23:43 ID:5GhHv22w(1) AAS
>>409
それmod_rewriteじゃなくてmod_proxyじゃね?
411: 2009/10/21(水)01:33 ID:??? AAS
素直にサブドメイン作ろうぜ
作れないならあきらめようぜ
412: 409 2009/10/21(水)07:31 ID:??? AAS
どもです。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: 2009/10/21(水)07:35 ID:??? AAS
あ、補足です。
ディレクトリを移動しない理由を書いていませんでした。
CMSのCGIが入っているんので移動すると更新が出来なくなってしまうのです。
414
(1): 2009/10/21(水)21:12 ID:??? AAS
SEO的にってことは、外部リンク:www.test.com にアクセスしたら
外部リンク:hoge1.test.com にリダイレクトされた方がいいんだよね。

hoge1 だけでよければ

RewriteCond %{REQUEST_URI} ^/hoge1
RewriteRule ^/hoge1/(.*)$ 外部リンク:hoge1.test.com [R]

でいけそうだけど、www.test.com 以下のディレクトリ全部に
自動的に対応させたいってのはどうするのかな。

あと、こういう例題ドメインには example.com とかを使った方がいいよ。
415: 409 2009/10/22(木)16:25 ID:??? AAS
>>414
ありがとうございました。
各コンテンツの中は相対パスで書かれているのでその記述で対応可能でした。

example.com<了解っす。感謝。
416: VnkTQPKasQlVsIBi [7g5l0n3dn.@gmail.com] 2009/10/23(金)02:02 ID:??? AAS
Thanks to blogging and online social networking, they are quick to share their knowledge and opinions with one another. ,
417: mABzoZWqufJAw [ebdhcga97.@gmail.com] 2009/10/23(金)22:58 ID:??? AAS
The crush I could always fall back on, no matter how much time had passed. ,
418
(3): 2009/10/27(火)02:04 ID:qLUEsO4U(1/2) AAS
外部リンク[php]:hogemoge.com
外部リンク:hogemoge.comでアクセスする方法をどなたか教えてください。
check.phpのみ適用されるようにしてください。
外部リンク:foo.jpのところはいろいろ変わります。
http://をhttp:/と解釈されないようにしてください。
checkの部分を変えてもcheck.phpに当たるようにもしてください。
よろしくお願いします。
419: 418 2009/10/27(火)02:26 ID:qLUEsO4U(2/2) AAS
言い忘れ
2.2系で動くやつでお願いします
420
(1): 2009/10/27(火)08:05 ID:??? AAS
>>418
やりたいことが意味不明なんだが、
http://を含むリクエストがあったら、それをcheck.phpに回すだけでよくないか?
それなら、
RewriteRule ^.+/http(:|%3A)//.*$ /check.php [NC,L]
あとは、$_SERVER['REQUEST_URI']をcheck.phpで確認する、でどうかね。

で、http://をhttp:/と解釈してしまうのはアプリケーション上のことであって、
mod_rewriteはそんな仕事はしない。
ブラウザでアクセスしようとするとコロンがエンコードされて%3Aで送ることがある
421: 2009/10/27(火)08:06 ID:??? AAS
あ、%はまずいかw
422: 418 2009/10/28(水)23:41 ID:VXoEwsZU(1) AAS
>>420
外部リンク:hogemoge.com
とやってみたがNot Foundだった。なぜだろう

Not Found
The requested URL /check/外部リンク:foo.jp was not found on this server.
って。
423
(1): 2009/10/29(木)01:16 ID:??? AAS
ログ見た?

ところで、
RewriteRule ^.* /check.php [NC,L]
これなら、正常に表示される?
で、順にhttpとか//とか試せば
424: 2009/11/08(日)13:58 ID:??? AAS
あげ
425: 2009/11/08(日)14:05 ID:35LWJ8zb(1) AAS
URLを書換えてから、クエリー部分をそのままphpに渡すつもりです
外部リンク[php]:localhost
だったら、
request.php?action=input.php&query=(ここにaction=submit&id=111を示す文字列を書きたい)
みたいな事をしたいです
426: 2009/11/08(日)14:14 ID:??? AAS
してくれ。
427: ◆cCWqf4GI8E 2009/11/08(日)18:49 ID:w74YnUY2(1) AAS
425は偽。俺が本物か証明できるかどうかはわからんがトリップをつける
IIJがアク禁になって当分投稿できなかった。すまない。
>>423
# cat /var/log/httpd/access_log
192.168.56.1 - - [28/Oct/2009:23:40:43 +0900] "GET /check/外部リンク:foo.jp 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 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
(1): 2009/11/08(日)19:44 ID:??? AAS
> RewriteRule ^.* /check.php [NC,L]にしたらInternal Server Errorになった
それ、.htaccessに書いてる?httpd.confに書いてる?
RewriteRuleで複数書き換えると無限ループすることがあるよ。
特に.htaccessのとき。
429: 2009/11/09(月)10:17 ID:??? AAS
単発の質問を偽物扱いして退けようとするなんてかっこいいなw
430: 2009/11/10(火)07:44 ID:sgFUme3q(1) AAS
>>428
.htaccessに書いてた・・・
httpd.confなら
<Directory /var/www/html>
RewriteEngine On
RewriteRule ^.* /check.php [NC,L]
</Directory>
的なことを書けばいいんだよね?
431: 2009/11/10(火)19:51 ID:??? AAS
<Directory>に書いたら、ディレクトリコンテキストだから基本的に一緒
ディレクトリコンテキスト外で書いた方がループしない。

ループするのとは直接関係ないかもだけど、実ファイルがあったら書き換えないっていう指定も追加するといい
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} .ico$ [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
432
(1): 2009/11/18(水)14:12 ID:??? AAS
誘導されて来ました。

早速質問なのですが、
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
(1): 2009/11/18(水)14:22 ID:??? AAS
index.phpへのアクセス → index.php?page=index.php になってるんじゃないの?

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([0-9A-Za-z.]+)$ index.php?page=$1 [L]
434
(1): 2009/11/18(水)14:58 ID:??? AAS
>>432
あと、オプションをQSAにしてみたら?
435: 2009/11/18(水)18:51 ID:??? AAS
>>433-434
遅くなりまして申し訳ないです。

期待していた通りに動作しました。ありがとうございました。
436: 2009/11/22(日)04:53 ID:kXZj6gQw(1) AAS
日本語をURLエンコードしているんだけど、それを半角英数に書き換え戻したいんだが。
無理だな。
437: 2010/01/13(水)21:00 ID:M9fqIs3k(1) AAS
携帯端末以外からのアクセスをIPで弾いてるのだけど…
PCからのアクセスの場合どこに飛ばしたものか苦慮してる。

そこでhtaccessの挙動がまだよくわからんのだけど、
htaccessって最後まで読まれてから、その全ての記述が実行されてるんでしょうか。
それとも、上から順番に実行していって、例えば RewriteRule で
[L]を末尾につけた場合はそこで処理がとまったりするんでしょーか。
438: 2010/01/13(水)22:47 ID:??? AAS
設定ファイルに書かれた順序を考慮して動作するモジュールがあるというだけで、
設定ファイル自体はスクリプトではないので最後まで読まれます。
439: 2010/01/15(金)15:21 ID:??? AAS
まさかApacheスレを探していて、質問しようと思っていた項目専用のスレがあるとは・・・
今後宜しくです
440
(1): 2010/01/15(金)15:32 ID:??? AAS
>>1のリンクをザッとみて良く分からなかったのですが、
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
の !\.(js|ico|gif|jpg|png|css)$ の部分の意味が良く分かりません
PHPやJavaScriptとは違うようですし、正規表現のような気もしません
これら! \ $の文字は言語で言うと何に分類されるのでしょうか?
Apacheは専門的に勉強したことがないのですが、Apache専用の言語(演算子)なのでしょうか?
441: 440 2010/01/15(金)15:38 ID:??? AAS
ごめんなさい
普通に正規表現でした・・・
442: 2010/01/21(木)17:13 ID:r/4DT42h(1) AAS
RewriteCondの書き方でわかる方いたら教えてください
「base/pic」に入ってる画像のみ、rewriteしたくて、ほかはそのまま
表示したいのですが、どう書けばいいでしょうか?

RewriteCond %{REQUEST_URI} !^.+\.(gif|jpg|jpeg|png)$

ですべての画像を弾くのはできそうなんですが…
443
(1): 2010/01/21(木)17:53 ID:??? AAS
RewriteCond %{REQUEST_URI} base/pic.+\.(gif|jpe?g|png)$

/dummybase/pics0001.gif も条件に当てはまるけど。
444: 2010/01/22(金)14:19 ID:siFOym7C(1) AAS
>443
遅くなりましたが
ありがとうございます!
445
(2): 2010/01/25(月)08:26 ID:ckid/8q/(1) AAS
Redirect済みかどうかの判定ってできないんでしょうか?

ブラウザ上では
/main/ が / になるように、301でリダイレクトしたいんですけど、
内部的には / を /main/ にしたくて
/ でも /main/ でも同じページが返されるようにしたいんです。

現状 ↓
RewriteRule ^/*main/?(.*)/*$ $1 [L,R=301,QSA]
RewriteRule ^$ main/ [L,QSA]

これだと無限ループになるんで、上のルールがリダイレクト済みなら評価しないっていうことが
できればなあと思っています。
内部リダイレクトはNSフラグによるサブリクエストにはならないようですし、
REMOTE_ADDRでアクセスした時のURLがわかればと思ったけど
それも内部リダイレクトで上書きされてしまうようでお手上げになってしまいました。
446: 2010/01/25(月)15:37 ID:??? AAS
設計の問題だと思うけど。
例えば/index.cgiとか何らかのスクリプトを経由して
/main/index.htmlを表示するようにバイパスすればいーんじゃねーの。
447: 2010/01/25(月)15:58 ID:??? AAS
>>445
IS_SUBREQでどう?
448
(1): 2010/01/25(月)19:13 ID:??? AAS
mod_headerでダミーのヘッダをセットして2度目かどうかをチェックっていうのがあったな。
クライアントが変態でそのヘッダを自前で付けてきたら違う動作するだろうけど。
449: 445 2010/01/26(火)20:06 ID:??? AAS
レスありがとうございます。
>>448で一考したんですが、同等の考え方で、どうせQSAつけてるんだしって思って
?redirected=1みたいなクエリ付けてその判定を利用することにしました。
450: 2010/02/03(水)11:44 ID:yhcV776z(1/2) AAS
RewriteRule ^s/?f=([0-9A-Za-z)]+)$ /search/?f=$1 [L]
と書いたら、表示は出来ますが関数が無効になっています。
RewriteRule ^s/([0-9A-Za-z)]+)$ /search/?f=$1 [L]
の場合では、関数が有効になっています。

出来れば「?f=」の形にしたいのですが、どうすれば良いでしょうか?
451
(1): 2010/02/03(水)11:58 ID:??? AAS
メタ文字だからじゃない?
452: 2010/02/03(水)12:28 ID:yhcV776z(2/2) AAS
>>451
「全くその通りだ」と思って下の様に変更したのですが、変化がありません。
何か間違っていますか?
RewriteRule ^s/\?f=([0-9A-Za-z)]+)$ /search/?f=$1 [L]
453: 2010/02/03(水)13:26 ID:??? AAS
変換前はどんなURLなん?
454: 2010/02/03(水)15:02 ID:??? AAS
URLの?以降はRuleではマッチしないから、CondでQUERY_STRINGとマッチしておいて
Ruleで%数字の参照を使って値を引っ張るとさっさと教えてやれw
455: 2010/02/03(水)17:30 ID:??? AAS
断る!
456: 2010/02/03(水)21:56 ID:??? AAS
と思ったけど・・・
457: 2010/02/03(水)23:16 ID:??? AAS
QSAフラグでもいいと思うよ
Query String Appendって意味

って誰か教えてあげて
458: 2010/02/04(木)13:45 ID:??? AAS
/username/test.phpにアクセスしたときにサーバー上の/u/s/e/username/test.phpにアクセスさせるようにするにはどうすればいいでしょうか?
文字列を一文字ずつにディレクトリを分解しておきたいのです。
459
(1): 2010/02/04(木)13:57 ID:??? AAS
(.)(.)(.)(.*) を $1/$2/$3/$4 とか
460
(1): 2010/02/04(木)14:01 ID:??? AAS
ユーザ名ごとにディレクトリ作ってんのかw
461: 2010/02/04(木)14:58 ID:??? AAS
>>459
ありがとうございます
((.)(.)(.).*) $2/$3/$4/$1でいけました
>>460
何かいい方法があれば教えてくださいませんか
一つのディレクトリに詰め込むとすると数万から数十万のファイルやサブディレクトリを作ることになりそうです
462: 2010/02/04(木)15:20 ID:??? AAS
それで何か問題あるの?
463: 2010/02/04(木)15:38 ID:??? AAS
数万のファイルやディレクトリが1か所にあると
操作が非常に重くなって使いものにならなくなる
464: 2010/02/04(木)15:44 ID:??? AAS
GUIでやらなきゃいいんじゃね?
465: 2010/02/04(木)15:49 ID:??? AAS
CUIでの話をしているのだが
466: 2010/02/04(木)15:50 ID:??? AAS
まあ最近のOSのファイルシステムならあまり心配いらないのかもしれないね
環境書いてないからそんな前提入れられないけど
467: 2010/02/04(木)15:52 ID:??? AAS
どういう操作すると重くなるの?
468: 2010/02/04(木)15:53 ID:??? AAS
CUIどころかそのディレクトリのファイルの一つをプログラムから
読みに行こうとするだけで重くなる。SunOSの古いやつだけど
もし持ってたらやってみるといい
469: 2010/02/04(木)15:54 ID:??? AAS
新しくすれw
470: 2010/02/04(木)16:01 ID:??? AAS
ディレクトリ分けに賛成
471: 2010/02/04(木)17:24 ID:??? AAS
FC2のブログも画像ファイルはユーザ名の頭三文字を1字ずつディレクトリ作ってるね
まさかURL上だけ分けてるってことはないだろうけど
472: 2010/02/04(木)18:51 ID:??? AAS
そんなときはReiserFS
473: 2010/02/04(木)19:13 ID:??? AAS
例えばext2/3だとサブディレクトリの数は32,000個までという制限がある
また、1ディレクトリのファイル数も実用上1万程度が限界点となっている
そういうFSでは458みたいな工夫が必要になるわな
474: 2010/02/04(木)19:18 ID:??? AAS
ReiserFSは作者が奥さん殺しちゃったからな
475: 2010/02/04(木)21:52 ID:??? AAS
へー

で?
476: 2010/02/11(木)12:27 ID:??? AAS
外部リンク:hoge.example.com
にアクセスしたら
/home/test/public_html/common/index.php?sub=hoge
とするにはどうすればいいのでしょうか?
477: 2010/02/11(木)12:49 ID:??? AAS
^/$ ??????
478: 2010/02/11(木)12:51 ID:??? AAS
oh, i'd been misled.
479: 2010/02/12(金)20:32 ID:??? AAS
I like watermelon.
480
(1): 2010/02/15(月)21:20 ID:??? AAS
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://%{HTTP_HOST}%{REQUEST_URI}

httpにしてくれないどころか、適当なRewriteRule書いても反応して
くれてないんで、RewriteCond %{SERVER_PORT} ^443$ で https を
捕まえてくれてないっぽい。{HTTPS} on|of でもダメでした。

なにがまずいのか、誰かボスケテ。
481
(1): 2010/02/15(月)21:27 ID:??? AAS
%{SERVER_PORT}が443になってるかどうかは確認した?
482
(4): 2010/02/16(火)09:02 ID:??? AAS
>>481

オス。
ssl.conf に Listen 443
httpd.conf に Listen 80

ssl.confはちゃんと読み込まれてる。
別件でパケットキャプチャ使ったんだけど、ちゃんと80、443で動いてるみたい。

なんだろうなー。よく解ってない人が管理してたサーバーの引継ぎで散々苦労
したんだけど、これが片付けば一段落つくのにドン詰まり;
483: 482 2010/02/16(火)09:10 ID:??? AAS
念のためにPHPから echo $_SERVER['SERVER_PORT'] で出してみた。
http,https、それぞれ80,443 になってる。
484
(1): 2010/02/16(火)09:12 ID:??? AAS
いや、そのrewriteルールに到達してない可能性があるんじゃない?
rewriteLogを確認するか、
RewriteCond %{SERVER_PORT} ^443$
のところで、環境変数にでも入れて、その行に来てるかどうかを確認してみたらどうかなと。

よくあるのは、httpのvirtualhostとsslのvirtualhostを分けてて、
そもそも、sslのときはそのルールは適用されてないとかね。
485: 482 2010/02/16(火)10:34 ID:??? AAS
>>484

返答ありがと。
rewrite_log確認しました。

>480 の記述で、
httpの時は RewiteRule の apply pattern がふたつ出力された後に
httpの時のRewriteCond の評価やってるけど、httpsの時は何も出力
されない。
RewiteRuleの時点でひっかかってくれてないな。

他の記述を全部とっぱらって、 ^443$ 関連の記述のみにしても、なにも
出力されてない。パッと見では https の時はガン無視して素通りされて
るような感じなんだよなー。

人が設定したモンなんでもしやと思って virtualhost も確認してみたけど、
それは無かった。

なんだろう???
486: 2010/02/16(火)10:50 ID:??? AAS
> パッと見では https の時はガン無視して素通りされてるような感じなんだよなー。

その通りだろう
487
(1): 2010/02/17(水)11:56 ID:??? AAS
httpsの時はallowoverrideがNoneとか
488: 482 2010/02/17(水)15:38 ID:??? AAS
>>487

.htaccess は使わずに httpd.conf に書いてる。
489
(1): 2010/02/17(水)15:40 ID:??? AAS
じゃあ描いてる場所だな
490: 482 2010/02/17(水)16:40 ID:??? AAS
>>489

んー、conf.d とこのファイルも怪しいな。
も一回確認してくる =3
491: 2010/02/26(金)00:23 ID:GCPXDWut(1) AAS
/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: 2010/02/26(金)00:53 ID:??? AAS
それでいいんじゃないの
493: 2010/02/26(金)04:54 ID:??? AAS
[R] を取っ払えばよさそう
494: 2010/03/25(木)10:21 ID:Vmjt6F6A(1) AAS
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>

外部リンク[html]:xxx.test.example.com → ○
外部リンク:xxx.test.example.com → ×(index.htmlが表示されて欲しい)
画像リンク[jpg]:xxx.test.example.com → ×(/xxx/img/img.jpg は存在します)

分かる方よろしくお願いします。
495: 2010/03/25(木)11:17 ID:??? AAS
最初のはDirectoryIndexで再投函されたあとの挙動だろうけど
下の方は、xxx以下にrewriteしてから、-fチェックをするようにしてみたら?
496: 2010/03/28(日)14:03 ID:??? AAS
それ、mod_vhost_alias使った方がいいんじゃね?
497
(1): 2010/04/20(火)05:07 ID:rovGBKgZ(1) AAS
example.com/aaa.php?x=1&y=2

これを

example.com/bbb/?x=1&y=2

にURLを書き換えたいのですがうまくいきません。
どう書けば良いでしょうか?よろしくお願いします。
498
(1): 2010/04/21(水)02:35 ID:??? AAS
/aaa.php /bbb/ [L]

と,テストもせず勘でレスしてみる
499: 497 2010/04/22(木)08:40 ID:zYh2UuQ3(1) AAS
>>498
ありがとうございます。うまくいきました。
最後にもう1つだけ質問させてください。

example.com/aaa.php?x=1

これを

example.com/bbb/?y=1

に書き換えたいのですがよろしくお願いします。
xをyに書き換えたいです。
500: 2010/04/22(木)23:00 ID:??? AAS
それ意味あるのかね

ぱっと分からんけど,できそうだからこのへん見てみたら?
外部リンク[html]:httpd.apache.org

Modifying the Query String のとこ。英語だけど
501: 2010/06/11(金)07:22 ID:??? AAS
1.3のは訳がある
外部リンク[html]:httpd.apache.org
502: 2010/08/01(日)20:38 ID:??? AAS
外部リンク:test.com というディレクトリを
外部リンク:new.com として下位のディレクトリもそのまま
転送したいのですが、どう設定したらいいんでしょう?

うーん。エラーばっか・・・orz
503: 2010/08/02(月)16:59 ID:4s58A5gB(1) AAS
age
504: 2010/08/12(木)21:39 ID:??? AAS
試してみたことを全部書いてみれば?
505: 2010/08/20(金)14:39 ID:vi5gBlqp(1) AAS
すいません、
httpsでアクセス時に、特定のURLを除いて全てhttpにリダイレクトするようにしたいのですが、
どのような書き方をすればよいでしょうか?調べたのですが分からなくて・・
教えていただけると嬉しいです。
506: 2010/11/21(日)11:03 ID:??? AAS
無限ループで困っています。

やりたいこと
HTML5対応のブラウザで自宅のファイルサーバの中にある
mp4動画ファイルを独自に設置したプレイヤーで再生する。

やったこと
mp4が置いてある場所をmod_autoindexで表示させる
mp4ファイルがクリックされたらphpに飛ばしてプレイヤーのHTMLを生成

上記のmp4ファイルがクリックされたらphpに飛ばす。という部分を
mod_rewriteで実現しようと、.htaccessに以下のような記述をしました。
RewriteEngine On
RewriteRule (^.*\.mp4$) video.php

これによりhoge.mp4がクリックされたらvideo.phpで
<video src='hoge.mp4'>と展開されますがこのsrc='hoge.mp4'が
無限ループの原因のようです。

よろしくお願いします
507: 2010/11/21(日)11:53 ID:??? AAS
pathを限定すればいいと思う
<video src='./hoge.mp4'>
として
RewriteEngine On
RewriteRule (^[^\.]+.*\.mp4$) video.php
508: 2010/11/24(水)09:45 ID:??? AAS
> これによりhoge.mp4がクリックされたらvideo.phpで
> <video src='hoge.mp4'>と展開されますがこのsrc='hoge.mp4'が
> 無限ループの原因のようです。

まんまやん。
展開したファイルで自分にリクエストが来るんだから、
video.php からvideo.phpを呼んでいるようなもの。
mod_rewirteじゃなくてロジックを見直したら?
1-
あと 178 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.654s*