Apacheの mod_rewrite の設定方法についてお聞きしたい事があります。

Perl等のURL その(1)
http://localhost/cgi-bin/dir1/dir2/dir3/file.cgi …
             |__________dir_________||__file_||__パラメータ_|
というURLがあるとします。↑
上記のディレクトリをパラメータとしておく場合↓

Perl等のURL その(2)
http://localhost/cgi-bin/hoge.cgi?dir=/dir1/dir2 …
             |_別のファイル-||_______上記のdirとfileとパラメータ ------|

という事を行いたいのですが、mod_rewriteをどのように設定すればいいのかが
よくわかりません。
すいませんが、誰か教えていただけないでしょうか。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

質問の意図が今ひとつわかってないので申し訳ないですが…



RewriteEngine on
RewriteRule ^/cgi-bin(/.+\.cgi.*)$ /path/to/cgi-bin/hoge.cgi?dir=$1

こういう事でしょうか?
(要するに、/cgi-bin 以降を全て dir= から続くQuery-String に突っ込む感じと勝手に想像したのですが…)

はずしてたらすいません。あと、手元では全然試してないです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Q-i -e "s|^.|ok|" ./text どこが間違っているのでしょうか?

$ cat ./text
aaa
bbb

$ perl -i -e "s|^.|ok|" ./text
これを実行しても、./text に変化がありません。
どこが間違っているのでしょうか?

$ cat ./text
okaa
bbb
となることを期待しています。

Aベストアンサー

スイッチ0でレコードセパレータをNull文字にしてみては?

例) -----------------------------------------------------------------
perl -p0e 's|^.|ok|' ./text
---------------------------------------------------------------------

参考URL:http://www.ibm.com/developerworks/jp/linux/library/l-p101/

Q__DATA__の再利用

こんばんは、皆さん。

以下のプログラムは1回しか__DATA__を読み込まないですが、
2回めのprintで__DATA__を表示させるにはどうしたらよいのでしょうか?

------------------------------------------------------
#!/usr/bin/perl

$str = "DATA";

$aaa = &test($str);
print $aaa;

sub test($){

$instr = @_[0];

foreach (<$instr>){
print;
}

foreach (<$instr>){
print;
}


}

__DATA__
1
2
3
------------------------------------------------------

Aベストアンサー

DATA は seekable なファイルハンドルなので、tell と seek を使って読み込み位置を変更することができます。

最初のループの前に

$fpos_top_of_instr = tell $instr;

を入れ、次のループの前に

seek $instr, $fpos_top_of_instr, 0;

を入れてみて下さい。

# seek $instr, 0, 0; と強制的に先頭に戻すと・・・

Q特定のdirで発行したcookieを上のdirで参照できますか?

特定のdirで発行したcookieを上のdirで参照できますか?

クッキー発行では、PATHやドメイン等は設定しておらず、クッキー名とUserIDとPASSしか発行していないのですが、
PATHを設定した場合、クッキー値は、クッキーを生成したWebページ、同じディレクトリ内のWebページ、
同じディレクトリ内のサブディレクトリ内のWebページで参照が可能らしく、
省略時はCookie を設定したページのパス名になる。との事らしいのですが、

/A/a1/bbs.cgiへ認証した際に発行されたクッキー(クッキー名/ID/PASS)を
/A/bbs.cgiで参照ってできますでしょうか。

上の階層である
/A/bbs.cgi(同じCGIスクリプト)でクッキー情報を参照した場合、クッキー名だけが参照できている状況で困惑しています。

どなたか正しい情報をご掲示頂けませんでしょうか。宜しくお願い致します。

Aベストアンサー

以下の参考リンクをじっくり読んでみましょう。

http://www.futomi.com/lecture/cookie/
http://www.futomi.com/lecture/cookie/specification.html

参考URL:http://www.futomi.com/lecture/cookie/

QDB_Fileモジュールインストール失敗について

DB_Fileモジュールがインストールできません。

環境はturbolinux server10でrpm -qa | grep db したところ、
db4-4.2.52-6がインストールされているようです。

そこでDB_Fileのインストールを試みたところ、以下のような
エラーとなってしまいます。

Writing Makefile for DB_File
cp DB_File.pm blib/lib/DB_File.pm
AutoSplitting blib/lib/DB_File.pm (blib/lib/auto/DB_File)
cc -c -I/usr/local/BerkeleyDB/include -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE
_PIDS -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_S
OURCE -D_FILE_OFFSET_BITS=64 -O2 -g -march=i586 -DVERSION=\"1.814\" -DXS_VERSI
ON=\"1.814\" -fPIC "-I/usr/lib/perl5/5.8.5/i386-linux-thread-multi/CORE" -D_NOT
_CORE -DmDB_Prefix_t=size_t -DmDB_Hash_t=u_int32_t version.c
version.c:30:16: db.h: No such file or directory
make: *** [version.o] Error 1
/usr/bin/make -- NOT OK
Running make test
Can't test without successful make
Running make install
make had returned bad status, install seems impossible


なにかversion.cが何なのかが分からなくて困っています。
そもそも、DB_Fileはperlに同梱されているものと思っていましたが、、、

何が足りないのでしょう?教えてください。よろしくお願いします。

DB_Fileモジュールがインストールできません。

環境はturbolinux server10でrpm -qa | grep db したところ、
db4-4.2.52-6がインストールされているようです。

そこでDB_Fileのインストールを試みたところ、以下のような
エラーとなってしまいます。

Writing Makefile for DB_File
cp DB_File.pm blib/lib/DB_File.pm
AutoSplitting blib/lib/DB_File.pm (blib/lib/auto/DB_File)
cc -c -I/usr/local/BerkeleyDB/include -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE
_PIDS -DDEBUGGING -fno-stri...続きを読む

Aベストアンサー

英語だからということでしり込みしてしまうかもしれませんが、
READMEくらいは目を通しましょうよ。

If you get an error like this:

cc -c -I/usr/local/include -Dbool=char -DHAS_BOOL
-O2 -DVERSION=\"1.64\" -DXS_VERSION=\"1.64\" -fpic
-I/usr/local/lib/perl5/i586-linux/5.00404/CORE -DmDB_Prefix_t=size_t
-DmDB_Hash_t=u_int32_t DB_File.c
DB_File.xs:101: db.h: No such file or directory

This symptom can imply:

2. You do have Berkeley DB installed, but it isn't in a standard place.
Solution: Edit config.in and set the LIB and INCLUDE variables to point
to the directories where libdb.a and db.h are installed.

とありますよ。
DB_Fileモジュールのソースアーカイブを展開した
ディレクトリに config.inというファイルがありますので、

# 1. Where is the file db.h?
#
# Change the path below to point to the directory where db.h is
# installed on your system.

INCLUDE= /usr/local/BerkeleyDB/include
#INCLUDE= /usr/local/include
#INCLUDE= /usr/include

# 2. Where is libdb?
#
# Change the path below to point to the directory where libdb is
# installed on your system.

LIB= /usr/local/BerkeleyDB/lib
#LIB= /usr/local/lib
#LIB= /usr/lib

この辺を質問者さんのシステムにあわせて
書き換えればいいのではないでしょうか?

参考URL:http://search.cpan.org/src/PMQS/DB_File-1.814/README

英語だからということでしり込みしてしまうかもしれませんが、
READMEくらいは目を通しましょうよ。

If you get an error like this:

cc -c -I/usr/local/include -Dbool=char -DHAS_BOOL
-O2 -DVERSION=\"1.64\" -DXS_VERSION=\"1.64\" -fpic
-I/usr/local/lib/perl5/i586-linux/5.00404/CORE -DmDB_Prefix_t=size_t
-DmDB_Hash_t=u_int32_t DB_File.c
DB_File.xs:101: db.h: No such file or directory

This symptom can imply:

2. You do have Berkeley DB installed, but it i...続きを読む

Q#exec cgi="**.cgi"をCGIページで表示する

#exec cgi="**.cgi"
を使って、全ページが同じように表示されるようにしたのですが、
掲示板等のCGIページではなぜか表示されず、ソースを見てみると
<!--#exec cgi="**.cgi"-->
がそのまま表示され、ただコメントとして扱われていました。
普通のHTMLファイルと同じように
CGIでも**.cgiファイルを表示したいのですが、どうすればいいのでしょうか

よろしくお願いします。

Aベストアンサー

CGIの中でしたら
include
または
require
で呼び出せばいいかと思います。


おすすめ情報