apacheの mod_rewrite の設定方法について

このQ&Aのポイント
  • Apacheのmod_rewriteを使用してURLのリライトを行う方法について教えてください。
  • 特定のディレクトリをパラメータとしてURLに保持する方法について教えてください。
  • 別のファイルへのURLを含むパラメータを扱う方法について教えてください。
回答を見る
  • ベストアンサー

apacheの mod_rewite の設定方法について

Apacheの mod_rewrite の設定方法についてお聞きしたい事があります。 Perl等のURL その(1) http://localhost/cgi-bin/dir1/dir2/dir3/file.cgi?para='test'              |__________dir_________||__file_||__パラメータ_| というURLがあるとします。↑ 上記のディレクトリをパラメータとしておく場合↓ Perl等のURL その(2) http://localhost/cgi-bin/hoge.cgi?dir=/dir1/dir2/dir3/file.cgi?para='test'              |_別のファイル-||_______上記のdirとfileとパラメータ ------| という事を行いたいのですが、mod_rewriteをどのように設定すればいいのかが よくわかりません。 すいませんが、誰か教えていただけないでしょうか。

  • airon
  • お礼率85% (12/14)
  • Perl
  • 回答数1
  • ありがとう数0

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

  • ベストアンサー
  • nipotan
  • ベストアンサー率59% (134/227)
回答No.1

質問の意図が今ひとつわかってないので申し訳ないですが… RewriteEngine on RewriteRule ^/cgi-bin(/.+\.cgi.*)$ /path/to/cgi-bin/hoge.cgi?dir=$1 こういう事でしょうか? (要するに、/cgi-bin 以降を全て dir= から続くQuery-String に突っ込む感じと勝手に想像したのですが…) はずしてたらすいません。あと、手元では全然試してないです。

関連するQ&A

  • mod_rewriteでアドレスを書き換えたい

    mod_rewriteでアドレスを書き換えたい思っています。 xamppでテストしていますがうまくいきません。 mod_rewrite.soの#は外しています。(つまり、.htaccess以外の設定はできていると思います) 【やりたい事】 localhost/test/index.php?p=test を  ↓ localhost/test/i/test でアクセスしたいです。 【参考にした情報】 http://www.sample.com/cgi-bin/sample/sample.cgi?a=123&b=456 というURLを静的なアドレスでアクセスできるように以下のように設定します。 RewriteEngine on RewriteRule ^/cgi-bin/sample/([0-9A-Za-z]+)/([0-9A-Za-z)]+)\.html$ /cgi-bin/sample/sample.cgi?a=$1&b=$2 [L] を言うのを見つけました。 【試したこと】 .htaccessをつくり RewriteEngine on RewriteRule ^/test/i/([0-9A-Za-z)]+)$ /test/index.php?p=$1 [L] と記入 【結果】 Object not found! 要求された URL は本サーバでは見つかりませんでした。 もし手入力で URL を入力した場合は、綴りを確認して再度お試し下さい。 と表示されました。 ------------------------------------------------------------------ localhost/test/i/testでアクセスするには、.htaccessをどう書けばいいのでしょうか? 疑問1.xamppでlocalhostでmod_rewriteができるのだろうか? 疑問2.参考にした情報のRewriteRuleの"^"がわからない。正規表現の"^"とは文頭にマッチすると思います。この場合の文頭とは? よろしくお願いします。

  • Apacheの設定について

    WindowsXP SP2 のローカルでCGIを動作させるために  http://www.adminweb.jp/apache/ を参考に下記を試みました。 (1)Apache ダウンロード・インストール・接続確認   「http://localhost/」へアクセスして「It works!」表示確認    (htdocs ディレクトリの index.html) (2)ActivePerlインストール    perl -v perl -h で動作確認 (3)CGI用エイリアスの設定    ScriptAlias /cgi-bin/ "C:/SERVER/Apache/cgi-bin/" (4)以下の test.pl を C:/SERVER/Apache/cgi-bin/ に設置    ------------------------------------------------------    #!C:/Perl/bin/perl.exe print "Content-type: text/html;\n\n"; print "<html><body><h1>test cgi</h1></body></html>\n";   -------------------------------------------------------    http://localhost/cgi-bin/test.pl の実行で    「Internal Server Error」になってしまいます。 どこの設定が間違っているのか見当がつきません。 何卒ご指導宜しくお願い致します。

  • Apacheのりダイレクトの方法

    Apacheのリダイレクトのconfの設定方法がわかりません。 /hoge/abc0001.html を /cgi-bin/test.cgi?mode=diary0001 でリダイレクトしたいのですが、 AliasMatch ^/hoge/abc(\d{4})$ /cgi-bin/test.cgi?mode=diary$1 ではうまくいきませんでした。 また、何かモジュールを有効にする必要はありますか? LoadModule rewrite_module modules/mod_rewrite.so のコメントをはずしましたが・・・ ご教授ください。

  • mod_rewrite設定について

    mod_rewrite設定について mod_rewriteでcgiに渡す引数の一部のみを書き換えることは可能でしょうか。 具体的には下記のような挙動を実現したいです。 http://mydomain.com/test.cgi?status=true&action=1 ↓ http://mydomain.com/test.cgi?status=false&action=1 2つ目の引数は複数のパターンが想定されています。 下記のようなrewriteの設定を試してみましたが リダイレクトされませんでした。 ~~~~~~~~~~~~~~~~~~~~~ RewriteEngine on RewriteRule ^/test.cgi?status=true(.*) http://mydomain.com/test.cgi?status=false$1 [QSA] ~~~~~~~~~~~~~~~~~~~~~ 助言をいただけないでしょうか。 よろしくお願い致します。

    • ベストアンサー
    • HTML
  • .htaccessにmod_rewriteを設定して静的なURLにしたい

    .htaccessにmod_rewriteを設定して、動的なページのURLを静的なURLにしたいのですが、うまくいきません。 http://localhost/test/hoge.php/aiueo というURLで http://localhost/test/hoge.php?key=aiueo になるようにしたいのです。 検索して試しに以下のように記述したのですが、ダメでした。 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^/test/hoge.php/(.+) /test/hoge.php?key=$1 [L] </IfModule> また「aiueo」の部分にスラッシュを含む場合もあるのですが、その際にも対応できるようにしたいです。 ご回答の程、よろしくお願いします。

    • ベストアンサー
    • PHP
  • javascriptとApacheの設定

    ローカルのマシンにApacheを設定後, テストのために簡単な javascript を含んだhtmlファイルをfirefoxから読み込もうとしたところ "Premature end of script headers" が出ました. 自身で調査しましたが,どうしても解決できません. 非常に困っております.どなたかご教授頂ければ幸いです. 【環境】 [OS]   Ubuntu 10.04 LTS [Apache] Version 2.2.14 (Ubuntu) [Apacheの設定] 初期設定でapache2.conf から (1) httpd.conf, (2) sites-available/default等が include されます. (2)のファイルのみ以下を変更しました: DocumentRoot /home/hoge/www/ ScriptAlias /cgi-bin/ /home/hoge/www/cgi-bin/ <Directory "/home/hoge/www/cgi-bin/"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> また mime.types には次の記述があります. application/javascript js text/x-perl    pl 【テストファイルの内容】 index.html 644 ************************************************************ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html> <head> <title>Test Example</title> <script type="text/javascript" src="/cgi-bin/test.js"></script> <script type="text/x-perl" src="/cgi-bin/first.pl"></script> </head> <body> TEST </body> </html> ************************************************************ /home/hoge/www/cgi-bin/first.pl 755 *************************************** #!/usr/bin/perl print "Content-type: text/html\n\n"; print "Hello, World."; *************************************** /home/hoge/www/cgi-bin/test.js 755 *************************************** document.write("Content-type: text/html<br><br>"); document.write("Hello World!"); *************************************** 【エラーの再現手順】 Firefox 3.6.13 から (1) http://localhost/test.html とした場合 TESTを出力しログにエラー [error] [client 127.0.0.1] Premature end of script headers: test.js, referer: http://localhost/test.html (2) http://localhost/cgi-bin/first.pl (出力正常) (3) http://localhost/cgi-bin/test.js (Internal Server Error) perl は大丈夫なのですが js がエラーになります.

  • Apache mod_rewriteの設定について

    LAMP環境でウェブサイトの制作を行っております。 (cakePHP2.6.4使用) サーバのmod_rewriteの設定を行って、URLの書き換えを行いたいと思っております。 例えば、 http://test.com でアクセスした場合、 http://www.test.com にリダイレクトするように設定することはできたのですが、 現在の状態ですと http://test.com/a でアクセスした場合、 http://www.test.com にリダイレクトしてしまいます。 できれば、 http://www.test.com/a にリダイレクトするようにしたいのですが、 どのように設定すればよいか分かりません。 お分かりいただける方いらっしゃいましたら、 ご教授のほどよろしくお願い致します。

  • c言語とperlのcgi設定方法

    (Arch linuxにてlighttpdサーバを立ち上げています) cgiは一般にperlが多いとは思いますが、C言語からのcgiも試みています perlによるcgiを有効にするにはlighttpd.confの設定に以下を追加  server.modules += ( "mod_cgi" )  cgi.assign = ( ".cgi" => "/usr/bin/perl")  static-file.exclude-extensions = ( ".cgi" ) C言語から作成したcgiを有効にするにはlighttpd.confの設定に以下を追加  server.modules += ( "mod_cgi" )  cgi.assign = ( ".cgi" => "")  static-file.exclude-extensions = ( ".cgi" ) 同一のサーバ下で「"/usr/bin/perl"」「""」ともにを有効にする設定方法はありますでしょうか よろしくお願いいたします

  • mod_rewrite について

    MVC モデルで web app を作る場合、mod_rewrite で url を「書き換え」て、1つのソースコードですべてのアクセスを処理する、 みたいなことはよくやられると思うのですが、 巷の情報を漁ってみると、 「mod_rewrite では post で渡されたパラメタを取得できない」 とのことでした。 でもこれって、リダイレクトした場合に、そうなることがありえるって話ですよね? mod_rewrite って、url を「書き換え」てるだけじゃないんでしょうか? url を書き換えて、リダイレクトまでされているんでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • apache/mod_perlの実行エラーについて

    apacheについて質問です。分かる方、どうぞご教授下さい。 httpd.confにmod_perlの設定を記述しない場合、通常どおりapacheが起動するのですが、以下のようにmod_perlの設定を追記するとapacheがエラーで起動しません。 【mod_perlの設定】 PerlModule ModPerl::Registry PerlRequire /usr/lib/perl5/site_perl/5.8.8/startup.pl <Location /cgi-bin> SetHandler perl-script PerlResponseHandler ModPerl::Registry PerlSendHeader On Options ExecCGI </Location> 【apacheのエラー内容】 /usr/local/apache2/bin/httpd: symbol lookup error: /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/Apache2/ServerUtil/ServerUtil.so: undefined symbol: ap_get_server_banner httpd.confのmod_perlの設定については、他のサーバーでは問題なく起動していますので、mod_perlのconfigure時の共有ライブラリの設定に不備があるのではと思っているのですがどう設定すればいいのか分かりません。mod_perlのconfigure時のオプションは以下のようになっています。 【mod_perlのconfigure】 perl Makefile.PL \ > MP_USE_STATIC=1 \ > MP_AP_PREFIX=../httpd-2.0.63 \ > MP_AP_CONFIGURE="--prefix=/usr/local/apache2 --with-mpm=prefork" 以下、grep の実行結果です。 [root@colinux mod_perl-2.0.3]# grep -r ap_get_server_banner /usr/lib/* バイナリー・ファイル/usr/lib/httpd/modules/mod_rewrite.soは一致しました バイナリー・ファイル/usr/lib/httpd/modules/mod_proxy_connect.soは一致しました バイナリー・ファイル/usr/lib/httpd/modules/mod_proxy_ftp.soは一致しました どんな些細なことでも結構ですので、どうかご教授のほど宜しくお願い致します。 【環境】 fedora6 apache2.0.63 mod_perl2.0.4