2

現在、Drupal サイト (6.*) に取り組んでいます。本番モードでは、何らかの http プロキシを介してアクセスされます。つまり、$_SERVER['HTTP_X_FORWARDED_SERVER']変数が に設定されている場合、カスタム テーマのすべてのリンクを書き直す必要があります。ユーザーがサイトにアクセスするドメイン。

サイトには多くの内部リンクがあり、主にViews. 私の考えでは、これを解決する最も簡単な方法は、url()および/またはl()関数にフックし、設定されている場合はそれを返す前にURLを後処理することですHTTP_X_FORWARDED_SERVER

私の問題は、これらの関数にフックする方法がわからないことです。または、コアに触れなくても可能であれば、誰かがこれを行う必要がありましたか? どのように解決しましたか?

更新: プロキシがプロキシ ドメインのルート レベルに配置されないことを忘れていたので、すべての URL を書き換える必要があると思います (システムによって生成された css ファイルや画像などへの内部リンクとパスの両方)。

例:

proxy.com/path -> site.com/lots/of/dirs

proxy.com/path/node/1 -> site.com/lots/of/dirs/node/1

proxy.com/path/sites/all/themes/mytheme/my.css -> site.com/lots/of/dirs/sites/all/themes/mytheme/my.css

4

2 に答える 2

3

必要なものを完全に理解しているかどうかはわかりませんが、 custom_url_rewrite_inbound()およびcustom_url_rewrite_outbound()関数を確認する必要があると思います。

于 2011-01-10T08:50:07.133 に答える
1

bootstrap.incの以下の行を置き換えて、コアを少し変更する必要がありました。

$server = explode('.', implode('.', array_reverse(explode(':', rtrim($_SERVER['HTTP_HOST'], '.')))));

$host = $_SERVER['HTTP_X_FORWARDED_HOST'] ? $_SERVER['HTTP_X_FORWARDED_HOST'] : $_SERVER['HTTP_HOST']; 
$server = explode('.', implode('.', array_reverse(explode(':', rtrim($host, '.')))));

次に、proxy.comのURLを使用して新しいサイトフォルダを設定し、settings.phpで変更$base_urlしました。$cookie_domain

于 2011-01-10T11:26:33.723 に答える