1

一部のページの URL を書き換えて、既存の印刷物と一致するように特定のサブドメインからのものであることを示す必要がある WordPress サイトがあります。htaccess と mod_proxy を介してこれを実行しようとしており、近づいていますが、助けが必要です。

これが私が今持っているコードで、多少機能します:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^subdomain\.domain\.edu$ [NC]
RewriteRule ^ http://othersubdomain.domain.edu/folder1/folder2/folder3%{REQUEST_URI} [L,P]

subdomain.domain.edu と入力すると、正しいページ ( http://othersubdomain.domain.edu/folder1/folder2/folder3にある) が表示され、ブラウザーの URL は subdomain.domain.edu のままです。これはうまくいきます!

問題は内部ページにあります。たとえば、subdomain.domain.edu/contact と入力すると、適切なページにリダイレクトされますが、URL は書き換えられたままではなく、サービスが提供されている場所の完全な URL が表示されます。

内部ページの URL も書き直すのを手伝ってもらえますか? 私はとても近くにいるように感じます!

4

1 に答える 1

2

まあ、ここでは主に mod_proxy を使用していません。mod_rewrite のプロキシ フラグを使用しています。少なくとも、ProxyPassReverseを使用して、URL が変わらないようにする必要があります。

また、ユースケースでは mod_rewrite は推奨されません。バックエンド サーバーから返されたページには、othersubdomain.domain.edu を直接参照する絶対 URL が埋め込まれている場合があります。mod_proxy の ProxyPass または ProxyPassMatch を mod_proxy_html と共に使用する必要があります。それでも解決しない場合は、コメントでお知らせください。

更新

まず、mod_proxy に関する完全なドキュメントを読んでください。これは最も強力な apache モジュールの 1 つであり、深く学ぶことは大いに役立ちます。次に、これには .htaccess を使用しないでください。

特定のサブドメイン用に仮想ホストが構成されていると想定しています。そうでない場合は、最初に構成する必要があります。ここで、仮想ホスト構成に次の行を追加します。

<VirtualHost *:80>
    ServerName subdomain.domain.edu

    ProxyPass         / http://othersubdomain.domain.edu/folder1/folder2/folder3/
    ProxyPassReverse  / http://othersubdomain.domain.edu/folder1/folder2/folder3/
    ProxyPassReverseCookieDomain  othersubdomain.domain.edu subdomain.domain.edu
    ProxyPassReverseCookiePath  /folder1/folder2/folder3/  /
</VirtualHost>

上記の構成ディレクティブは、http://subdomain.domain.edu/foo/barのリクエストをhttp://othersubdomain.domain.edu/folder1/folder2/folder3/foo/barにプロキシします。応答が利用可能になると、そのヘッダーが変更され、subdomain.domain.edu から生成されたようにユーザーに表示されます。バックエンド サーバーが Cookie を生成する場合 (たとえば、ユーザーがサインインする必要がある場合)、Cookie ディレクティブが必要です。

これには長い道のりが必要です。その後、ページ コンテンツ内のリンク、埋め込みスタイルシート、または JavaScript を変更する場合は、mod_proxy_htmlのドキュメントを参照してください。

于 2013-11-15T05:24:59.770 に答える