• ベストアンサー

URLについて

たとえば、「http://xxx.xxx.xxx/card/1234」というアドレスで、1234番のカードを表示するというようなことをやりたいのですが、どうしたらよいでしょうか。 cardディレクトリにindex.cgiを置いて、$ENV{'QUERY_STRING'}で取得すればいいのかなと思ったのですが、それだと「http://xxx.xxx.xxx/card/?1234」のように数字の前に「?」を入れないと「404 - ファイルが見つかりません。」のエラーになってしまいます。できれば「?」はURLに入れたくありません。 アドバイスいただけないでしょうか。よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • gonic
  • ベストアンサー率30% (18/59)
回答No.3

#2です。質問とちょっと違いました。 .htaccess に RewriteRuleを指定したらどうですか。 WEB相談室:htaccessについて http://chaichan.hp.infoseek.co.jp/qa3000/qa3056.htm Apache - Perl http://mikaka.org/urat/apache/

Orange-LL
質問者

お礼

上記サイトの回答のとおりにやってみたらできました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • betagamma
  • ベストアンサー率34% (195/558)
回答No.4

#1です。 私も、#2さんのRewriteRuleで大丈夫だったと記憶しています。RewriteRuleの名前が出てきませんでしたw

全文を見る
すると、全ての回答が全文表示されます。
  • gonic
  • ベストアンサー率30% (18/59)
回答No.2

PATH_INFOですね。

参考URL:
http://allabout.co.jp/career/cgiperl/closeup/CU20041105A/
全文を見る
すると、全ての回答が全文表示されます。
  • betagamma
  • ベストアンサー率34% (195/558)
回答No.1

.htaccessの、RedirectMatchでうまくいかないでしょうか? http://www.shtml.jp/htaccess/redirect.html とりあえず、.htaccessを使うことはたしかだと思います。

Orange-LL
質問者

お礼

RedirectMatchの場合、記述にミスがあったのかうまくいきませんでした。 でも、.htaccessの勉強になりました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連する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

    今まで気になっていたけど分からないことがあります。 以下のような数字で終わるURLがありますが、どのような仕組みでCGIが動作しているのでしょうか? http://ramendb.supleks.jp/score/49087 単純に49087というディレクトリがあって、その下にファイルがあるのでしょうか? サイトを構築した方に聞かないと本当のところは分かりませんが、推測でよいのでどなたか教えていただけるとうれしいです。 お手数をおかけしますがよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • ページの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