- 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 それではマターリ逝きましょう。
- 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 変わらなかったんだけど/はだめなの?
- 272 名前:nobodyさん [2008/01/23(水) 22:17:35 ID:iTWduqjM]
- hoge.com/aaa/?page=2をhoge.com/aaa/index2.html
というふうに301リダイレクトしたいのですが、 RewriteEngine On RewriteRule ^/aaa/?page=([0-9A-Za-z]+)$ /aaa/index$1.html [R=301,L] で上手くいかないのですが、だれかご教授ねがいないでしょうか?
- 273 名前:nobodyさん mailto:sage [2008/01/24(木) 14:33:10 ID:???]
- ねがいない
- 274 名前:nobodyさん mailto:sage [2008/01/24(木) 20:16:55 ID:???]
- RewriteEngine on
RewriteRule ^([A-Za-z0-9-/]+)/?$ /test/$1 [L] ってやってるんですけど、元から実在するURIが渡されるとrewriteされません。 例えば、hogeへリクエストがあると/test/hogeにrewriteされるんですが、 testへリクエストがあるとtestのままで/test/testとなってくれません。 このようにするにはどうすればいいんでしょうか。
- 275 名前:nobodyさん mailto:sage [2008/01/27(日) 15:53:17 ID:???]
- レンタル鯖屋も大変だな…
- 276 名前:nobodyさん mailto:sage [2008/02/06(水) 01:37:13 ID:???]
- >>271
最長一致、つまりこの場合左に現れる .+ ができるだけ長くマッチしようとする。 その結果、 $1 => aa/bb $2 => cc となる。 RewriteRule ^/(.+?)/(.*)$ /$1/index.php?i=$2 として最短一致にすれば期待の結果になる。 あるいは、$1 に / が含まれない仕様であれば、 RewriteRule ^/([^/]+/(.*)$ /$1/index.php?i=$2 と書けばいい。
- 277 名前:sage [2008/02/06(水) 13:09:37 ID:cmfp+wYF]
- すみません、動的URLから動的URLへの書き換えで質問です。
/(dirname)/main.php?(x=XXX&y=yyy) カッコ内は動的 ↓ /admin/main.php?dir=(dirname)&(x=XXX&y=YYY) という感じに、要はディレクトリ名をdirという部分に渡したいのですが、 下記の正規表現で上手く動きません。 どなたかご教授いただけませんか? RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)/main.php?(.*)$ admin/main.php?dir=$1&$2
- 278 名前:nobodyさん mailto:sage [2008/02/06(水) 13:10:14 ID:???]
- ↑いまさらダサすぎる失敗はスルーしてください><
- 279 名前:nobodyさん mailto:sage [2008/02/06(水) 14:21:15 ID:???]
- 自己解決。QSA便利ですね
- 280 名前:nobodyさん [2008/02/07(木) 20:08:01 ID:L14jE359]
- fedora8にyumでhttpdをインスコしましたが、mod_rewrite.soが含まれていませんでした
これだけでは足りないと思い、httpd-develもインスコしましたがやはり見つかりません yumのlistにもmod_rewriteのパッケージが見つからないのです httpd自体をmakeしなおさないとリンクしないような気がしてならないのですが、これはwgetでmod_rewrite単体を modulesの下に置くだけでよいのでしょうか? よろしくお願いします
- 281 名前:nobodyさん mailto:sage [2008/02/08(金) 01:43:18 ID:???]
- Fedora使いじゃないんで良く分からんが、
download.fedora.redhat.com/pub/fedora/linux/releases/8/Fedora/i386/os/Packages/httpd-2.2.6-3.i386.rpm には ./usr/lib/httpd/modules/mod_rewrite.so が入ってるけど。 もし mod_rewrite.so がないとして、 httpd -l して mod_so.c があれば DSO 対応でコンパイルしてあるので、 所定のディレクトリにモジュールをおけばいい。 どこから wget してくるのか知らんが。
- 282 名前:280 mailto:sage [2008/02/09(土) 02:06:41 ID:???]
- >>281
confファイルのある/etc/httpd/modules/の下を探していたのですが、ご指摘の場所にmod_rewrite.soが入っていました まだfedoraのディレクトリ階層に不慣れなものでお恥ずかしいです httpd -lも確認したところ、mod_so.cがリストされましたのでDSO対応のようです どうもありがとうございました
- 283 名前:nobodyさん mailto:sage [2008/02/10(日) 09:37:29 ID:???]
- >>280
ソースからビルドしたほうが楽じゃね?
- 284 名前:nobodyさん mailto:sage [2008/02/29(金) 15:31:46 ID:???]
- IE7 で BASIC 認証されると Refer に
id:pw@example.com/contact/?email=test@example.com と id:pw@ が残るので example.com/contact/?email=test@example.com のように消したいと考えています。 mod_rewrite で消す方法思いつく方いらっしゃいますか。
- 285 名前:nobodyさん [2008/02/29(金) 22:12:08 ID:a2f9rZSr]
- age
- 286 名前:nobodyさん mailto:sage [2008/04/20(日) 18:57:28 ID:???]
- CGI起動のphpをnphにしてrewriteで呼び出すとヘッダ情報が処理データの後に出てくるんだがorz
このスレ見ると>>76で同じ症状があったみたいだが、自力では解決できなかった・・・。 RewriteRule ^.*$ /nph-page.cgi [T=application/x-httpd-cgi,L] とか、 RewriteRule ^(.+)$ xredirect:$1 RewriteRule ^xredirect:(.*) /nph-page.cgi [T=application/x-httpd-cgi,L] とか試したんだが駄目だった。。。 アクセスしてきたURIは環境変数で受け取る予定です 助けてください
- 287 名前:age mailto:age [2008/04/26(土) 13:59:43 ID:???]
- age
- 288 名前:nobodyさん mailto:sage [2008/05/15(木) 20:23:59 ID:???]
- age
- 289 名前:nobodyさん [2008/07/08(火) 18:33:15 ID:svqzHQk4]
- 特定のURLにアクセスがあったときにだけログを出力して
リダイレクトさせたいのですが、こういった細かい事は スクリプトサイドでやらせるのが正しいのでしょうか?
- 290 名前:nobodyさん mailto:sage [2008/07/08(火) 19:05:19 ID:???]
- サーバサイドじゃね
- 291 名前:nobodyさん [2008/07/08(火) 19:09:36 ID:svqzHQk4]
- >>290
ありがとう やっぱりそうですよねorz
- 292 名前:nobodyさん [2008/07/16(水) 14:57:36 ID:XAZRRasQ]
- mod_rewiteを使って、
localhost/*/2ch.net/ で、2chが表示されるみたいなことってできませんか? RewriteRule /\*/(.*)/(.*) $1/$2 [P] といれても、だめだったし。 ちょっと、サーバーサイドスクリプトなしでxhrの穴をつきたいんで。
- 293 名前:nobodyさん mailto:sage [2008/07/16(水) 16:39:58 ID:???]
- REQUEST_FILENAME がとれずに
本来 /var/www/test となるものが、 /test だけになってしまいます。 考えられる原因は何でしょうか?
- 294 名前:nobodyさん mailto:sage [2008/08/11(月) 15:59:29 ID:???]
- RewriteRule ^\*/(.*)$ $1 [P]
mod_rewriteとmod_proxyが必要
- 295 名前:nobodyさん [2008/08/30(土) 01:18:08 ID:KZbGqcdu]
- よろしくお願いします
現在拡張子が付いていないアクセスを、.phpとつけるだけなんですが http://○○○.com/dir/index?id=hoge ↓ http://○○○.com/dir/index.php?id=hoge 下記のように書いてみたのですが、動作していないです。 RewriteEngine on RewriteRule /dir/index?(.*)$ /dir/index.php?$1 どなたかご教授よろしくお願いします。 あと、上記が成功したらapacheのログには.phpがついたログが記載されますか?
- 296 名前:nobodyさん mailto:sage [2008/08/30(土) 01:53:33 ID:???]
- /dir/index$ /dir/index.php
じゃないかな
- 297 名前:nobodyさん [2008/08/30(土) 01:54:50 ID:KZbGqcdu]
- ありがとう。やってみる
- 298 名前:nobodyさん [2008/08/30(土) 02:00:47 ID:KZbGqcdu]
- >296
だみでしたorz 普通に拡張子が付いていない方のリクエストのようです http://○○○.com/dir/index?id=hoge
- 299 名前:nobodyさん mailto:sage [2008/08/30(土) 02:06:07 ID:???]
- /dir/index(\?.*) /dir/index.php$1
これでどうかな
- 300 名前:nobodyさん [2008/08/30(土) 02:13:02 ID:KZbGqcdu]
- 教えてもらってありがとうございます。
しかしだめみたいです。
- 301 名前:nobodyさん mailto:sage [2008/08/30(土) 08:59:28 ID:???]
- RewriteRule ^/dir/index$ /dir/index.php [QSA]
じゃないか?
- 302 名前:nobodyさん mailto:sage [2008/08/30(土) 09:01:02 ID:???]
- 補足
RewriteBaseも書いとけ
- 303 名前:nobodyさん [2008/09/20(土) 23:45:28 ID:28hSW6Aw]
- www.example.comにアクセスがあったら
www.example.com/hogeに転送するように設定したいんだけど うまくいきません。 <IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^/ /hoge </IfModule> これだとだめなようす。 どのように設定すればいいのでしょうか?
- 304 名前:nobodyさん mailto:sage [2008/09/21(日) 00:50:14 ID:???]
- [R]
- 305 名前:nobodyさん mailto:sage [2008/09/25(木) 21:44:14 ID:???]
- サンクスです。
解決しました
- 306 名前:nobodyさん mailto:sage [2008/10/06(月) 15:15:17 ID:???]
- この辺読んどけ
tech.bayashi.jp/archives/entry/techweb/2007/001981.html
- 307 名前:nobodyさん [2008/10/10(金) 22:36:02 ID:Px0vbjZd]
- 教えてgooとのマルチポストになってしまいますが、ご容赦下さい。
mod_rewriteで$_GETが受け取れない現象の原因が分からず、困っています。 公開サーバはVineLinux3.2でApache2を動かしています。 ドキュメントルートに以下の内容の.htaccessを配置しています。 RewriteEngine on RewriteRule ^index/([a-z0-9A-Z_]*)?$ index.php?action=$1 RewriteRule ^index/([a-z0-9A-Z_]+)/([a-z0-9A-Z_]+)/([a-z0-9A-Z_]+)$ index.php?action=$1&type=$2&value=$3 ところが、 index/hogehogeにアクセスしても、 index.phpの結果しか返ってきません。 index.phpでvar_dump($_GET);を実行した結果は、 array(0) {}となります。 WindowXP + XAMPP1.6.6a で構築したローカル環境では期待通り、 index/hogehogeにアクセスすることでindex.php?action=hogehogeの結果が返ってきます。 エラーログも確認しましたが、エラーも出ていません。 少なくとも、index/hogehogeにアクセスしてindex.phpの結果が返ってくるということは、 .htaccessに書かれたRewriteRuleが全く反映されてないわけではないのだと思うのですが…。 どこに原因があるのか全く分からず、困っております。 宜しくお願いします。
- 308 名前:nobodyさん mailto:sage [2008/10/11(土) 05:03:38 ID:???]
- はぁ?マルチ死ね
- 309 名前:nobodyさん mailto:sage [2008/10/12(日) 17:26:32 ID:???]
- >>307
rewriterule にパラメーターを含めない
- 310 名前:nobodyさん mailto:sage [2008/11/05(水) 00:49:31 ID:???]
- 詰まってしまって困っています。
お助けいただけませんでしょうか。 hoge.com/a/b/hoge.php/aaa/111/bbb/222/ccc/333 ↑こんなURLを hoge.com/a/b/hoge.php?aaa=111&bbb=222&ccc=333 ↑こんな風に解決し、表示されるアドレスも後者のように表示されるような RewriteRuleを書きたいのですが、どのように記述すればいいのでしょうか。 /aaa/111/bbb…のようなパラメータ部分はPHPによって名前も数も変化します。 表示されるアドレスが前者のアドレスのままであればできているのですが、 R=301のオプションを設定すると mnt/httpd/…/hoge.com/a/b/hoge.php?aaa=111…のようなアドレスになってしまい、 アクセスしたいアドレスとは違うアドレスになり、 結果表示できなくなってしまいます。 この状態について解説しているページのアドレスだけでもいいので お教えいただけませんでしょうか。
- 311 名前:nobodyさん mailto:sage [2008/11/16(日) 19:04:37 ID:???]
- スレチっぽいけど質問
mod_rewrite で301返し続けているのに、 Feedfetcher-Googleがずっと元のrssを取りに来るんですが、 向こうさんのDBが書き換えられるのってそんなに時間がかかるもんなの? まだ一週間ちょっとしかたってないんだけど、もうちょっとまったら 書き換えられるのかな
- 312 名前:nobodyさん [2008/11/21(金) 11:03:56 ID:/EsDW5qx]
- 質問させてください
今、Windows XP apache2 でmod_rewriteをはじめて使ってるんですが、 ループを繰り返してエラーしてしまっています。 ●httpd.conf は以下のようになっていて、 LoadModule rewrite_module modules/mod_rewrite.so #mod_rewriteしたときのログを残す RewriteLog logs/rewrite.log RewriteLogLevel 9 ●localhost/.htaccess の中は php_flag magic_quotes_gpc off RewriteEngine on RewriteBase / RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php となっています。 しかし、rewrite.log の中に何も書き出されません。 どこか間違っているんでしょうか? また、念のため確認したいんですがrewrite.logのパスはどこを基準に考えたらいいんでしょうか?
- 313 名前:nobodyさん mailto:sage [2008/11/21(金) 11:15:10 ID:???]
- ループしているというログはどこで確認したんでしょうか?
その時のエラーメッセージは? rewrite.logのパスはServer Rootから相対だけど、とりあえず フルパスで書いちゃえば?
- 314 名前:nobodyさん mailto:sage [2008/11/21(金) 11:18:31 ID:???]
- ログ書き出す前にRewriteEngine on は要らないの?
- 315 名前:312 [2008/11/21(金) 11:20:51 ID:/EsDW5qx]
- >>313
素早い回答ありがとうございます。 ループについては、ブラウザにそういうメッセージが出るんです。 Firefox 「自動転送がループしています このアドレスへのリクエストに対するサーバの自動転送設定がループしています。」 Chrome 「このウェブページにはリダイレクト ループが含まれています。」 パスについては現在以下のようになってます。 C:\Program Files\Apache Group\Apache2\logs\rewrite.log 問題ないですよね? ループしてるってのが勘違いでそもそも動いてないんだろうか? mod_rewriteが動作してるかどうか、チェックする方法ないでしょうか? 自分としてはログを見ることでそれを確認しようと思ってたんですが、、 .htaccessを書き換えたら出来るのかな どうしたらいいでしょうか?
- 316 名前:312 [2008/11/21(金) 11:24:54 ID:/EsDW5qx]
- >>314
.htaccessに書いてるのではダメということですか? httpd.confには312で書いただけしか記述してませんがアレでは不足でしょうか? いろんなサイトを見てその通りにしたつもりですが。。
- 317 名前:nobodyさん mailto:sage [2008/11/21(金) 11:49:44 ID:???]
- ブラウザにそのように表示されるなら、ループしてるのは、
アプリでリダイレクトしてるからでしょう。 rewriteでループしたらhttpdのログに普通に出るはず。 >>314氏が言ってるのは、httpd.confが先によまれるけど、 そのときに、rewrite エンジンがonじゃなかったらディレクティブが 無視されるのでは?って話かと。
- 318 名前:312 [2008/11/21(金) 13:31:49 ID:/EsDW5qx]
- >>317
mod_rewriteのエラーであれば、error.logに出力されるということですか? そういえば、error.logにはそういう記述がありません。 >>>314氏が言ってるのは、httpd.confが先によまれるけど、 >そのときに、rewrite エンジンがonじゃなかったらディレクティブが >無視されるのでは?って話かと。 .htaccessに書いてある RewriteEngine on では不十分ということでしょうか? どこに記述したらいいんでしょう? 自分なりに勉強してるつもりなんですが、、知識不足で本当に済みません
- 319 名前:nobodyさん mailto:sage [2008/11/21(金) 13:45:35 ID:???]
- httpd.confでRewriteLogの行の上に書いてみたら?
んで、RewriteLogはフルパスで。 で、php側はphpinfoでも出力するようにしてリクエストを確認してみたらどう?
- 320 名前:312 [2008/11/22(土) 06:29:56 ID:BXxABI2c]
- >>319
ありがとうございます、でもうまくいきませんでした なぜかrewrite.logへのパスを指定するとapacheが動かなくなってしまいました。 そこで、根本的に基礎からやり直そうとして、httpd.confに RewriteEngine on RewriteRule ^/(.*)$ /index2.php$1 [R=301,L] と書いて、 localhost/test.gifにアクセスしたところ「自動転送がループしています」とブラウザに 言われてしまいました。※.htaccessは使ってません。 (ブラウザのURL欄の表記は localhost/index2.phpindex2.phpindex2.phpindex2.phpindex2.php(中略)index2.phpindex2.phpsample.gif になってました) index2.phpのソースは <?php echo "rewrite成功"; ?> だけです。 何が原因なんでしょうか? さっぱりわからないです。 ちなみに、RewriteRule ^/(.*)$ /system/index.html$1 [R=301,L] と書いても localhost/system/index.htmlsystem/index.html(中略)system/index.htmlsystem/index.htmltest.gifになります。 ブラウザのクッキーの消去などもしてみたんですが、、何度も申し訳ないですが 気が向いた方よろしくお願いします。
- 321 名前:nobodyさん mailto:sage [2008/11/22(土) 07:14:24 ID:???]
- > RewriteRule ^/(.*)$ /index2.php$1 [R=301,L]
そりゃ、ループするわ。 > RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php こっちじゃなかったの?
- 322 名前:nobodyさん mailto:sage [2008/11/22(土) 07:20:14 ID:???]
- > RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
これもループしそうだな 書き換えたindex.phpは永久に!\.(js|ico|gif|jpg|png|css)$の条件に当てはまるだろうし
- 323 名前:nobodyさん mailto:sage [2008/11/22(土) 07:22:12 ID:???]
- ログへのパスを指定したら動かなくなったら、messagesかなんかに、ログが出るでしょ。
ログファイルがないとか権限がないとか。 RewriteRule ^/hoge(.*)$ /index2.php$1 [R=301,L] で、/hoge/hogeにアクセスしてみ?
- 324 名前:nobodyさん mailto:sage [2008/11/22(土) 07:35:20 ID:???]
- >>322
それはループしないよ。 R=301だとブラウザにリダイレクトして再リクエストさせるけど、 > RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php この場合、index.phpがすべてのリクエストを受けとって処理開始
- 325 名前:nobodyさん [2008/11/22(土) 07:36:48 ID:BXxABI2c]
- みなさんありがとうございます、順にためしてみますね。
ログファイルの設定でapacheが再スタートできなくなると書きましたが、 ちょっと前までは設定しても動かせてたんです、それが突然だめになりました
- 326 名前:nobodyさん [2008/11/22(土) 07:44:24 ID:BXxABI2c]
- >> RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
>こっちじゃなかったの? RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.phpに設定して localhost/favicon.ico にアクセスしたら、ちゃんとfavicon.icoを表示しました が、 localhost/index2.php にアクセスしたら BadRequestといわれました RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php って index.phpに転送するって意味でよかったでしょうか? >RewriteRule ^/hoge(.*)$ /index2.php$1 [R=301,L] >で、/hoge/hogeにアクセスしてみ? をためしたところ localhost/index2.php/hoge になりました。これで正しいんでしょうか?
- 327 名前:nobodyさん mailto:sage [2008/11/22(土) 08:25:24 ID:???]
- 釣り?
index.phpになんか書いてあるんじゃないの? > RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php って index.phpに転送するって意味でよかったでしょうか? その通り > localhost/index2.php/hoge になりました。これで正しいんでしょうか? 正しいでしょう。
|

|