- ベストアンサー
URLについて
たとえば、「http://xxx.xxx.xxx/card/1234」というアドレスで、1234番のカードを表示するというようなことをやりたいのですが、どうしたらよいでしょうか。 cardディレクトリにindex.cgiを置いて、$ENV{'QUERY_STRING'}で取得すればいいのかなと思ったのですが、それだと「http://xxx.xxx.xxx/card/?1234」のように数字の前に「?」を入れないと「404 - ファイルが見つかりません。」のエラーになってしまいます。できれば「?」はURLに入れたくありません。 アドバイスいただけないでしょうか。よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
関連するQ&A
- QUERY_STRING が、SSIを使用すると取得できません
以下の2ファイルを使用して、 環境変数QUERY_STRINGの取得のテストをしています。 ------------------------------------------------ ファイル名:test_env.cgi ------------------------------------------------ 内容: print <<"HERE"; $ENV{'QUERY_STRING'}<br> $ENV{'REMOTE_ADDR'} HERE ------------------------------------------------ ------------------------------------------------ ファイル名:test_env.shtml ------------------------------------------------ 内容: <html> <head> <title> 環境変数のテスト </title> </head> <body> <!--#include virtual="/cgi-esp/test_env.cgi"--> </body> </html> ------------------------------------------------ ブラウザのアドレスバーに test_env.cgi?name=aaa と入力して実行すると、 QUERY_STRING、REMOTE_ADDR の両方が出力されますが、 test_env.shtml?name=aaa だと、 ローカルでは両方出力できたのに、 サーバにアップするとQUERY_STRINGが出力されません。 SSIを使用してCGIファイルを実行した場合、 QUERY_STRINGは取得できなくなるものなんでしょうか? それとも、取得できる書き方があるのでしょうか? どなたか、ご教示ください。
- ベストアンサー
- Perl
- $ENV{'QUERY_STRING'}以外で引数を取得するには?
CGI上で$ENV{'QUERY_STRING'}を使用しないで引数を取得するにはどうしたらいいのでしょうか? hoge.cgi?XXXX の XXXX を取得したいのですがある理由によって$ENV{'QUERY_STRING'}が使用できません。 よろしくお願いいたします。
- ベストアンサー
- CGI
- 「perl-cgiで質問です」URL打ち込みをPOSTで送信したい?
自作したtest.cgiに、 http://localhost/test.cgi?1,2,3,4,5 このように書くと、 1 2 3 4 5 と表示されるperlプログラム ==== $qs = $ENV{'QUERY_STRING'}; @array= split(/,/,$qs); foreach(@array){ print ; print "\n"; } ==== を作ったのですが、この数字の部分を長くするとうまくいきません。 もしかすると、GET?で送信されているため、長すぎると正常に受信できないのかもしれません。 詳しくは分かりません。 しかし、何とか、URLに直接書き込んだ状態で正常に表示させたいのですが何とかする方法は無いでしょうか? 宜しくお願い致します。
- ベストアンサー
- Perl
- SSIで呼び出したURLの取得
a.shtmlから ../a.cgi をSSIで呼び出したとき、a.shtmlのURLを取得したいのですが、うまい方法はありますでしょうか。 $ENV{'REQUEST_URI'} $ENV{'SCRIPT_FILENAME'} $ENV{'SCRIPT_NAME'} で表示してみたら、a.cgiのURL(パス)が出てきて、a.shtmlのURL(パス)が出てこなかったのです。 よろしくお願いします。
- ベストアンサー
- Perl
- フォームからCGIを起動できない
こんばんは。 WebサーバApacheでCGIを作成しています。 DocumentRootが初期設定/var/www/html/で、その下にindex.htmlを作成しました。 次にcgiのディレクトリが初期設定の/var/www/cgi-bin/で、その下にtest.cgiを作成しました。 そして、test.cgiのパーミッションを-rwxr-xr-xにしてからApacheを起動しました。 別マシンのブラウザからhttp://xxx.xxx.xxx.xxx/index.htmlでアクセスし、フォームのテキストボックスに「abc」と入力して送信ボタンを押しましたが、404エラーになってしまいます。 (アドレスバーには「http://xxx.xxx.xxx.xxx/test.cgi?NAME=abc」と表示) ブラウザのアドレスバーに直接「http://xxx.xxx.xxx.xxx/cgi-bin/test.cgi?NAME=abc」とすると正常にアクセスできます。 ドキュメントルート配下にあるindex.htmlからドキュメントルート外にあるCGIのディレクトリ(ScriptAlias /cgi/bin/ "/var/www/cgi-bin/")を参照するにはどのようにしたらよいのでしょうか? ----------index.html---------------- <HTML> <HEAD><TITLE>フォーム</TITLE></HEAD> <BODY> <FORM ACTION="../cgi-bin/test.cgi" METHOD="GET">名前 <INPUT TYPE="TEXT" NAME="NAME"><BR> <INPUT TYPE="SUBMIT" VALUE="送信"> </FORM> </BODY> </HTML> ----------index.html---------------- ----------test.cgi------------------ #!/usr/bin/perl $str = $ENV{"QUERY_STRING"}; print << "EOF"; Content-type: text/html <HTML> <HEAD><TITLE>TESTCGI</TITLE></HEAD> <BODY>$str</BODY> </HTML> EOF ----------test.cgi------------------
- ベストアンサー
- CGI
- 指定ディレクトリからcookie取得
$cook = $ENV{'HTTP_COOKIE'}; foreach ( split(/;/, $cook) ) { ($key, $val) = split(/=/); $key =~ s/\s//g; $cook{$key} = $val; } $cook{'name'} ./index.cgiで、上記のように$ENV{'HTTP_COOKIE'}でクッキーを取得しています。 このままでは./に保存されたクッキーが取得されてしまいますが、これを、任意のディレクトリ(./../html/等)に保存された場所から取得したいと考えていますが、可能でしょうか。 CGIが設置されているディレクトリ = 'http://hogehoge/cgi-bin/'; COOKIEを読み込むディレクトリ = 'http://hogehoge/html/';
- ベストアンサー
- Perl
- あるURLがファイルなのかディレクトリなのかが知りたい
用語の使い方が不正確かもしれませんがご容赦下さい。 例えば、http://www.foobar.jp/xxx というURLがあった場合に、xxx の部分がファイルなのか、あるいはディレクトリなのか、あるいはスクリプトなのか、を知るにはどうしたらいいでしょうか? 現在、以下のようなプログラムを作成しています。 ・あるURLを指定する。 ・そのURLが指すページの内容を取得する。 ・そのページの中にあるリンクを全て取得する。 ・取得したリンクをフルパスに変換して出力する。 この際、 ・指定したURLがホスト名のみ ・指定したURLが / で終わっている ・取得したリンクがフルパス ・取得したリンクが / で始まっている ような場合は問題ないのですが、 ・指定したURLがホスト名のみでなく、かつ / で終わらず、かつ取得したURL が / ではじまらない といった場合は、どのようにフルパスを組み立てたらいいかがわかりません。 例えば、指定したURLが「http://www.foobar.jp/xxx」、取得したリンクが「yyy/zzz」のような場合、出力すべきフルパスは以下の2種類が考えられますが... http://www.foobar.jp/xxx/yyy/zzz http://www.foobar.jp/yyy/zzz 以上よろしくお願いします。
- ベストアンサー
- Perl
- ページのURLに関して
SEOに詳しい方に質問があります。 当方で運用しているサイトのURLが xxx.jp/aaa/title/ なのですが、このサイト以下のコンテンツのURLが xxx.jp/bbb/title/contents/ のように、一つ上のディレクトリをトップページとは別のディレクトリにしているため、インデックス数をsite:~で計測したときにトップページしか計測されません。やはりサイト以下のコンテンツのURLも xxx.jp/bbb/title/contents/ ではなく、トップページと同じように xxx.jp/aaa/title/contents/ にしなくてはSEOでは不利なのでしょうか。
- 締切済み
- SEO
- CGIプログラム 初歩的質問
http://xxx.ne.jp/xxx.cgi 内設定 --------------------- $word = $ENV{'QUERY_STRING'}; ページに貼ったリンク -------------------------------- <a href="http://xxx.ne.jp/xxx.cgi?http://okwave.net/" target="_blank">http://okwave.net/</a> この場合だと、$word で http://okwave.net/ とCGI側に出てきますが、 <a href="http://xxx.ne.jp/xxx.cgi?無理難題" target="_blank">無理難題</a> と、日本語に変えるとCGI側表示が文字化けします。 何か付け加える必要があるのでしょうか? 検索しますがいまいちはっきりとした答えがありません。 ご教授をよろしくお願いします。
- ベストアンサー
- CGI
お礼
上記サイトの回答のとおりにやってみたらできました。 ありがとうございました。