• 締切済み

Apache mod_rewriteでポート番号の変更

Apache mod_rewriteでポート番号の変更を行いたいです。 現在フロントエンドApache(port:80)とバックエンドのApache(:8080)で利用しています。 フロントエンドからバックエンドにrewrite&proxyで渡しています。 バックエンドではmod_phpを利用していますが、アプリケーションによっては:8080がついている場合、正しく動作しない場合があり、バックエンド側で:8080を除去して、そのままバックエンドで処理したいと思っています。 どのようにrewriteの設定を行えばいいでしょうか。

  • apya
  • お礼率23% (4/17)

みんなの回答

  • uwi
  • ベストアンサー率74% (55/74)
回答No.1

フロントエンドApacheとありますが、これはリバースプロキシですか? だとすると ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ で動く気もします。 mod_rewriteを何に使っているかわかりません。 とりあえず現在のApacheの設定がないと答えようがないと思います。

apya
質問者

補足

おっしゃるとおりそれでバックエンドに渡すことはできますが、本質問はバックエンド側で受け取ったホスト名がサーバ名:8080になります。 そのためそのような利用を考慮されていないウェブアプリケーションの場合動作しない場合があります。(wordpressのcanonicalurlなど) そのためポート番号の8080をmod_rewriteで削除したいという質問内容です。

関連するQ&A

  • mod_rewriteを使用するための設定について

    お世話になります。 mod_rewriteの設定についてアドバイスいただきたいと思います。 今までレンタルサーバーで.htaccessを使って、動的URLを静的URLでアクセスさせることに用いていたのですが、自前サーバー(FedraCore2.0+Apache2.0.53)にその.htaccessファイルを移してみたところ、思ったような動作をしてくれません。色々なサイトを参考に見て回ったところ、「httpd.conf」が怪しいと感じたのですが、 LoadModule rewrite_module modules/mod_rewrite.so LoadModule proxy_module modules/mod_proxy.so の箇所もコメントアウトされておりますし、過去ログにもあったバーチャルホストの併用もしておりません。 ちなみに.htaccessは下記のような内容です。 DirectoryIndex index.htm index.php .ht RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^doc-([0-9]+).htm+ doc.php?number=$1 レンタルサーバーでは問題なく動作しておりましたので、.htaccess側の問題ではなくApache側の問題だと思っております。どなたかアドバイスの程よろしくお願いいたします。

  • Apacheでmod_rewriteを利用して複数ドメインを1個ですませる

    Apacheでmod_rewriteを利用して複数ドメインを1個ですませる方法を探しています。 rewriteマスターはいませんか? 現在virtualhostが数百ありますが、再起動速度が遅いこと、メモリ消費量が多いことから、1個ですませたいと思ってします。 <virtualhost></virtualhost>内でrewriteを利用して1個ですませる設定を教えていただけないでしょうか。 mod_vhost_aliasを考えましたが、他の設定も入れたいのでmod_rewriteでどうにかできないかと思っています。 教えていただけないでしょうか。

  • Apache mod_proxy_balancer

    Apache2.4のmod_proxy_balancerとWeb Socket通信についてご教示下さい。 ■環境 Linux6.5 Apache 2.4 ■実現したいこと Apacheをフロントとエンドで2台構成で使っています。 ・フロント mod_proxy_balancerを使用し、後続のエンド用Webサーバの振り分けを行っています。 通信はWeb socket通信を使用しております、WSSの通信をWSに変換してエンドに中継しています。 ・エンド 基本的なWebサーバの機能を有しております。この奥にAPがいる形です。 ■問題 フロントとエンドが1:多の関係だと、Web Socket通信が思うようにいきません。 しかし1:1の関係だとWeb socketの通信が想定通りに行われます。 ■ご教示いただきたいこと mod_proxy_balancerを使用したWebsocket通信がうまくいきませんが、 このあたりで何か事例など知っていましたら教えていただけないでしょうか。

  • mod_rewriteについて

    サーバーはさくらのスタンダードを利用しています。 mod_rewriteの動作について質問なのですが・・・ /item/details/5/などにアクセスがあった場合実際には /item/details.php?id=5が動作させるべく.htaccessに以下のように /(スラッシュ)で区切るとなぜか動作しません。 RewriteRule ^item/details/([0-9])/ item/details.php?id=$1 [L] 試しに以下のように_(アンダーバー)でつなげると意図する動作を 行います。 RewriteRule ^item_details/([0-9])/ item/details.php?id=$1 [L] どうすれば意図するようなurlで動作することが可能でしょうか?

  • Apacheのmod_rewriteに関してお

    Apacheのmod_rewriteに関してお教えください。 お世話になります。 色々なサイトを参考に試していますが、思う様にいかず困っています。 知恵をお借り頂けたらと存じます。 ・「mod_rewrite」を利用したメンテナンス画面の表示。 ・「F5」等で更新した際、本来の画面が表示される様、内部的な置き換えのみとしたい。 ・使用しているWebサーバは(Apache2.2系) ・「mod_proxy_ajp」を利用したコネクタ連携を行っている。 ・ホスト名によるバーチャルホスト ・configファイルに記載する方法で試し中 ・メンテ用html メンテナンス用htmlは、別途指定した「DocumentRoot」に配備しており、 同ディレクトリにイメージファイル格納用フォルダがある。 そのフォルダ内にimgファイルが配備されている。(pngファイル等) DocumentRoot Lhtmlファイル L格納フォルダ\イメージファイル 現在、Apacheの機能に関して勉強中です。 メンテナンス用画面表示用として、例えば色々なサイトに有るような、以下記載をしたとします。 --------- RewriteCond %{REQUEST_FILENAME} !(/メンテナンス画面.html|.*\.(gif|jpe?g|png|js|css|ico))$ RewriteRule ^(.*)$ /メンテナンス画面.html [R=503,P,L] --------- 「http://ホストIP/」等でアクセスした場合、ドキュメントルートを参照、意図した動きとなるのですが、 「http://ホストIP/^ユーザディレクトリ/」や、「http://ホストIP/Aliasディレクトリ/」等 一階層深いURLだった場合、メンテ用htmlは、表示されるのですが、参照イメージファイルがパス違いにより 参照出来なくなり、意図した動きとなりません。 ※ 「http://ホストIP%{REQUEST_URI}」配下を参照しようとしている。(RewriteLogより) 「RewriteRule ^(.*)$」だと全てになってしまう為、ルールを分け設定してみましたが 第3引数の指定が悪いのか設定した「RewriteRule」を全て参照し「RewriteCond」が動いてしまう。 引数や正規表現の問題だとは考えておりますが、なかなか正解に辿り着けません。 よろしくお願いします。

  • Apache の mod_rewrite モジュールについて

    Apache の コーナーがなかったのでここに書きます。 mod_rewrite モジュールの RewriteRule に [QSA] というオプションがあるのですが、これは何でしょう? http://www.net-newbie.com/trans/mod_rewrite.html によると > このフラグは、置換文字列の中でマッチしたものを書き換えるのではなく、 そこにクエリー文字列部分を追加するように、書き換えエンジンに強制 します。書き換えルールを通してクエリー文字列に何かデータを追加したい 場合にこのフラグを使います。 らしいですが、意味が分かりません。。。 具体的に、[QSA] を付けた場合と付けない場合は、どうちがうのですか?

    • ベストアンサー
    • PHP
  • mod_rewriteについて

    いつも参考にさせていただいております。 mod_rewrite を使って動的ページを静的ページに見せようとしています。 サイト内で検索する場合、検索条件が多数あるため どのようにしたらいいのか悩んでいます。 RewriteRule ^test_a_([0-9A-Za-z_]+) /test_a.php?%{QUERY_STRING} [L] としたとき、ページにはリンクされます。 ですが、パラメータとして扱われません。 (print_r($_GET); としても出力されません) 検索の場合、検索条件によってパラメータが変化するので RewriteRule を多々書き込まなくてはいけなくなってしまいます。 ですが、あまり書きすぎると動作がおかしくなると聞いています。 何かいい方法はありますでしょうか。 ご教授よろしくお願いいたします。 <環境> PHP:4.3.2 Apache:2.0.40 (Red Hat Linux)

  • 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のようにアクセスするとちゃんとページが表示されます。 どの当たりに問題がありそうでしょうか? 解析のヒントを頂けたらと思います。 宜しくお願い致します。

  • apacheにおいてmod_rewriteのRewriteRuleを動的に設定したい

    apache2.xにおいて、mod_rewriteを用いて URLの動的な書き換えを行っていますが、 正規表現ではなく、URLの一部を用いて、外部(DB等)に問い合わせて、 その結果を元に書き換えができる方法を探しています。 例えば http://example.co.jp/aaa/ というURLにアクセスがあった場合、 aaaをキーにしてDBに問い合わせて、その結果を元に rewriteを行う、といったイメージです。 mod_rewriteのマニュアルを読んだのですが、 そのような事が出来そうな項目はありませんでした。 方法or代替策等ご存じの方 教えていただければと思います。

  • mod_rewriteについて

    SEOに効果があるのかも賛否両論ですが.htaccessに以下のような指定で 拡張子がphpのものをhtmlに変更しました。 RewriteRule ^([A-Za-z0-9]+).html$ $1.php [L] ○○.htmlにアクセスがあれば実際には○○.phpを表示させるという ことで成功はしたのですが○○.phpにアクセスしても普通にページが 表示されてしまいます。 ロボットがきてhtmlとphpと同内容があればなにか問題があるのかと 思い(根拠がない勝手な妄想ですが)○○.phpにアクセスがあれば実際に 表示するのは○○.phpですが○○.htmlへリダイレクトさせたいと 思っているのですがどうやれば可能でしょうか? また実際にサーバーにアップしてあるファイルの拡張子はphpなので すがmod_rewriteでこのような設定をしただけでロボットにhtmlとして 認識されるのでしょうか? mod_rewriteは初めて使うもので希望の動作に必要性があるのかすら よくわからない状況なのですが詳しい方がおりましたら是非ご教授を お願い致します。