• ベストアンサー

mod_rewriteによる内部サーバの公開

http://公開サーバ/blog にアクセスすると、LAN内別サーバ(グローバルIP無し)で動いているcgiやのphpのプログラムを閲覧できるようにしたいのですが、どのような方法があるでしょうか。 例えば、http://内部IP/pukiwiki.phpを閲覧したい場合、公開サーバ側のhttpd.confを <VirtualHost *> RewriteEngine On RewriteRule ^/blog(.*)$ http:/内部IP:80/pukiwiki.php$1 [P,NE,L] </VirtualHost> とすればよいかと思ったのですが、結果、http:/内部IP:80/pukiwiki.phpにリダイレクトされるだけで、LAN外からの閲覧ができません。 公開サーバ上でのapacheの負荷を分散したいので、上記のようなことを考えています。

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

  • ベストアンサー
回答No.2
zerofore
質問者

お礼

リンク先の情報にて解決しました。 どうもありがとうございます。

その他の回答 (1)

noname#39970
noname#39970
回答No.1

rewrite ではなく ProxyPassReverse ディレクティブを使う

zerofore
質問者

お礼

すばやい回答感謝します。。 ProxyPassReverse で解決しました。

関連するQ&A

  • mod_rewriteが効かない!

    サーバの運用上、mod_rewriteを使う必要が出来たので設定してみたのですが効きません。 FreeBSD4.11+Apache1.3.33で httpd.confファイルに直接書き込んで試しています。 LoadModule rewrite_module modules/mod_rewrite.so AddModule mod_rewrite.c のどちらも書いてあるにもかかわらず、下記のテスト設定を試してみたらローカルIPからアクセス出来てしまいます。 RewriteEngine on RewriteCond %{REMOTE_ADDR} ^192\.168\.1\. ←ローカルネットワークのアドレス RewriteRule ^.*$ - [F] どのようにしたらいいですか? アドバイスお願い致します。

  • mod_rewrite(.htaccess)で静的化したいのですが。。

    mod_Rewrite(.htaccess)を使って静的化をしようとしています。 設定内容は、以下にしています。 --------------------- ■httpd.conf DocumentRoot "/var/www/html/" <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory "/var/www/html/"> Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> --------------------- ■.htaccess RewriteEngine on RewriteRule ^/free/([0-9,a-z,A-Z]+)$ /free/index.php?action=$1 --------------------- 上記の設定だと次ページが表示されません。 また、httpd.confの設定に以下を追加すると正常に次ページが表示され、URLの静的化されます。 --------------------- RewriteEngine on RewriteRule ^/free/([0-9,a-z,A-Z]+)$ /free/index.php?action=$1 --------------------- .htaccessが有効になっていないか、もしくは.htaccessの格納場所が間違えているかと 思っているのですが、いろいろ試してみましたが結局うまくいきません。 .htaccessの格納場所は、http://ローカルIP/free/配下に置いてあります。 どなたかご存知の方はいらっしゃいますでしょうか。 上記の設定内容だけだと情報が足りないなどございましたら、おっしゃってください。 宜しくお願い致します。

  • Apache mod_rewriteが .htaccess ではうまく適用できない

    mod_rewriteで書き換えに挑戦しているのですが、うまく動いてくれません。 やりたいことは、 http://www.example.com/ 以下をすべて http://www.example.com/index.php に書き換えたい。 開発中は直接 httpd.conf を編集できるため RewriteEngine on RewriteRule ^/((?!css|js|img).*)$ /index.php?&%{QUERY_STRING} [L] 上記で問題なく動いているのですが、htaccessではinternal errorかACCESS forbidden, object notfound などでうまく以後来ません。 ためしに、 RewriteRule aaa index.php?&%{QUERY_STRING} [L] として、http://www.example.com/aaa にアクセスしても object notfound が返ってきます。 ^aaa としたり ^aaa$ としたり、いろいろ試してるのですが全滅・・・ 検索して見つかったサンプルなどをそのままコピーしても使えません。 ちなみに、開発環境では Apache2.2.4。 公開用では 1.3系 の予定です。 Apache2.2.4 の httpd.conf ではOK。htaccess ではOUT。 難しい・・・

  • apacheのmod_rewriteモジュール

    WebサーバにてHTTP TRACEメソッドが有効になっている場合の処置として、いろいろなページを見てるとhttpd.confに次のように記述するとありますが RewriteEngine On RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK) RewriteRule .* - [F] 2行目と3行目の意味を教えてください。 特に2行目については、TRACKメソッドを指定しているようですが、TRACKメソッドとは如何なるものでしょうか?

  • httpsでmod_rewriteができない

    はじめまして。 Linux環境で、apacheのhttp.confにmod_rewriteを記載し、httpsとhttpを切り替えたいと思っています。 httpd.confに以下のように記述しています。 <IfModule mod_rewrite.c> RewriteEngine on  #(1)httpで/aaaa/bbbbにアクセスされたときにhttps://~に変えたい RewriteCond %{REQUEST_URI} ^/aaaa/bbbb RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R]  #(2)httpsで/cccc/ddddにアクセスされたときにhttp://~に変えたい RewriteCond %{REQUEST_URI} ^/cccc/dddd RewriteCond %{HTTPS} on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R] </IfModule> 上記(1)のhttpでのアクセス時には、mod_rewriteが効いてhttpsへ切り替えられるのですが、 上記(2)のhttpsでのアクセス時には、mod_rewriteが効いていないようでhttpへ切り替えられません。 rewriteログを見てみると、当サイトへhttpでアクセスした場合にはログが出力されますが、 httpsでアクセスした場合には出力されません。 そもそもhttpsでのアクセスの場合にhttpd.confのmod_rewriteが効いていないようです。 ですが、これに対しどこを調査すべきかが分かっていません。 SSLの設定自体は出来ていると思っていて、 https://xxxx.jpのようにアクセスするとちゃんとページが表示されます。 どの当たりに問題がありそうでしょうか? 解析のヒントを頂けたらと思います。 宜しくお願い致します。

  • CentOSでhtaccessを使用してmod_rewrite

    CentOSで、htaccessを使用してmod_rewriteを利用したいのですが、いまいちどうしたらいいのかがわかりません。 動的URLを静的URLに変換したく、 htaccessに RewriteEngine on RewriteRule ^([0-9A-Za-z_]+)/$ index.php?t=$1 [L] と書きこみました。 すると404エラーがでます。 試しに #RewriteEngine on RewriteRule ^([0-9A-Za-z_]+)/$ index.php?t=$1 [L] とコメントアウトしたところ、通常に表示されました。 RewiteEngine on が何かしらの影響を与えていると思うのですが、 対策がよくわからないので質問いたしました。 ちなみにhttpd.confの設定は完了しています。 LoadModule rewrite_module modules/mod_rewrite.so と記述。

  • mod_rewriteの書き方について

    よろしくお願いします。 サーバーをhttp://80codeを使っています。 今回、mod_rewriteを使って静的アドレスにしようとしていますが、 404エラー(見つかりません)がでてしまい、うまく表示されません。 設定が間違っていますでしょうか? http://repo.teki2.com/に両方のファイルとも設置しています。 接続しに行っているアドレスは、http://repo.teki2.com/1/ です。 http://repo.teki2.com/index.php?mode=1 だとうまくいきます。 .htaccessの内容 RewriteEngine on RewriteRule ^/([0-9a-zA-Z]+)/$ /index\.php?mode=$1 [L] index.phpの内容 <?php echo $mode; ?> よろしくお願いします。

    • 締切済み
    • CGI
  • mod_rewriteがループして困っています。

    お世話になります。 mod_rewriteについて質問させていただいたものです。 おかげさまで、動的ページを静的に変更することができました。 が、最後にまた困ってしまったので、教えてください。 (1)hoge/mod_12.html で (2)hoge.php?mod=12 にアクセスできるようになりました。 が、(2)で保存された検索エンジンのランキングを、(1)に引き継ぐため、 .htaccessにつぎのようなコードを書いたところ、ループしている旨のエラーが出てしまいます。 RewriteEngine on RewriteCond %{QUERY_STRING} ^(.*)=(.*)$ RewriteRule ^hoge.php$ http://×××/hoge/%1_%2.html? [R=301,L] RewriteEngine on RewriteRule ^hoge/(.*)_(.*).html$ hoge.php?$1=$2 [L] 確かに、ループしているのですが、回避方法が分かりません。 オプションの設定で回避できないかと、オンラインマニュアルも見たのですが、OS・TCP/IP等の知識が乏しいためか、解読できません。 すみませんが、ループの回避の仕方を、ご教授の程、よろしくお願いいたします。

  • mod_rewriteで$_GETが受け取れない

    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の結果が返ってきます。 どこに原因があるのか全く分からず、困っております。 宜しくお願いします。

  • https→httpsのrewriteが出来ない

    https→httpsのrewriteが上手くいきません。 追加ドメイン取得前より、http→httpsのrewriteの設定をして利用していました。 今回、追加ドメイン(これを正式なURLとしたい)を取得したことにより、1つのファイルへ複数のドメインでアクセス出来る状況になってしまいました。  さくらのVPS   仮)IPアドレス   49.39.29.19     初期ドメイン  www1111aa.sakura.ne.jp  さくらのドメイン   仮)追加ドメイン  www.bbbb.com  ※CentOS httpd.confの2つのファイルを書きなおし、以下のrewriteは成功しました。  http://49.39.29.19 → https://www.bbbb.com  http://www1111aa.sakura.ne.jp→ https://www.bbbb.com  http://bbbb.com → https://www.bbbb.com しかしhttps→httpsの設定が上手くいかず、以下についてはそのままのアドレスとなってしまいます。  https://49.39.29.19  https://www1111aa.sakura.ne.jp  https://bbbb.com 上記の場合でもhttps://www.bbbb.comへ飛ぶように設定したいのですが、どのようにしたらよいかご教授ください。 ちなみに。私が既にhttpd.confに書いてダメだったものは以下です。 (1) <VirtualHost 49.39.29.19:443 > ServerName www.bbbb.com Redirect / https://www.bbbb.com </VirtualHost> (2) <IfModule mod_rewrite.c> RewriteEngine on ・・・ RewriteCond %{SERVER_PORT} ==443$ RewriteRule ^/(.*)?$ https://www.bbbb.com/$1 [L,R] </IfModule> ※ ^443$ともしてみましたがダメでした。 (3) <VirtualHost 49.39.29.19:443 > RewriteEngine On RewriteCond %{HTTP_HOST} ^bbbb\.com RewriteCond %{HTTP_HOST} ^www1111aa\.sakura\.ne\.jp RewriteCond %{HTTP_HOST} ^49\.39\.29\.19 RewriteRule /(.*) https://www.bbbb.com/$1 [R=301,L] </VirtualHost> ※VirtualHost以下を<IfModule mod_rewrite.c>で囲んだり、VirtualHostを<IfModule mod_rewrite.c>に変えたりしてみてもダメでした。 (4) Listen 80 Listen 443  と443を追記してみると、アパッチが再起動しなくなりました。エラー内容は以下です。 <エラー内容> NameVirtualHost *:80 has no VirtualHosts (98)Address already in use: make_sock: could not bind to address [::]:443 (98)Address already in use: make_sock: could not bind to address 0.0.0.0:443 no listening sockets available, shutting down Unable to open logs 仕事で急遽サーバー構築をしなければならなくなり勉強をしているもので、素人ですので分かりやすい言葉で説明していただけると助かります。 よろしくお願いします。