web-dev-qa-db-ja.com

ベースURLの問題とサブディレクトリ

私はdrupalサイト http://example.com にあり、同じサイトの開発バージョン http://another.example。 com/subdir 。開発バージョンで作業しているとき、/ sites/default/files /を参照するコンテンツ(イメージなど)は、パスの「/ subdir」部分を含める必要があるため機能しません。BASEが含まれている場合、href要素のhref属性は$base_urlで始まるURLに影響を与えないため、/の設定は機能しません。サブディレクトリ。

イメージ参照にサブディレクトリを含める最良の方法は何ですか?サーバーの書き換えに頼る必要がありますか?

2
Bobby Jack

サイトをよりポータブルにするために、ここでできることは2つあります。

テンプレートで:

  • allリンク(JavaScriptリンクも含む)には常にl()を使用します
  • テーマで画像を参照する必要がある場合:

    <img src="<?php echo $base_path . drupal_get_path('theme', 'themename'); ?>/logo.png" />
    

あなたのコンテンツ:

  • 絶対リンクを作成しない何らかの形式の file manager を使用しない限り、アップロードされたコンテンツのURLを保持する方法はありませんが、drupalファイルにリダイレクトします
  • 上記が機能しない場合、drupalサイトのサブディレクトリの下にあるサイトの書き換えルールを変更して、sites/default/filesで始まるリクエストされたすべてのURLを基本的に書き換える必要があります。 /(.*)がsubdir/sites/default/files/$ 1に書き換えられました

また、Apache mod_rewriteルールは次のようになります。

# Redirect all files requests to a subdir
RewriteRule ^/?sites/default/files/(.*) /subdir/sites/default/files/$1 [R=301,L]
4
wiifm

モジュール Pathologic がこれに役立ちます。

1
longwave

開発サイトのドメイン全体に柔軟性がある場合は、以下を使用すればすべてが機能することがわかります。

example.com->生産

dev.example.com->開発

サイトのディレクトリは、どちらの場合も/sites/example.comとして機能します。ドメインに一致するようにbase_urlを変更するだけです。

1
Craig Hyatt