web-dev-qa-db-ja.com

サブドメインのベースURLの問題

私のメインサイトはexample.comで、サブドメインモジュールを使用して以下のサブドメインを実行しています

  1. one.example.com
  2. two.example.com

サイトのリンクをリストするフッター用のhtmlブロック(admin/structure/block/add)を作成しました。このブロックは、メインドメイン(example.com)とすべてのサブドメイン(one.example.com、two.example.com)で表示されます

しかし、サブドメインのフッターブロックにURLの問題があります。たとえば、私は<a href="/suggestions">Suggestions</a>フッターブロックで、main domainにいる場合、http://example.com/suggestionshttp://one.example.com/suggestionshttp://two.example.com/suggestionsサブドメインにいるとき。

しかし、それはすべてのサブドメインに対してのみhttp://example.com/suggestionsにする必要があります

これを達成する方法はありますか?

1
Mesk

.htaccessではなく、sites/default/settings.phpにリダイレクトを追加したい(パンテオンが.htaccessリダイレクトを無視し、私のサイトの多くがPantheonでホストされているため)。構文にも慣れています。

最初の例では、/ suggestionsだけをexa​​mple.com/suggestionsにリダイレクトします。 2番目の例では、/ suggestionsの下にあるすべてのパス(/ suggestions/submitまたは/ suggestions/submit/thankyouなど)をメインドメイン(example.com)の同じパスにリダイレクトします。

「提案」と同様のシナリオでこのソリューションをワイルドカード化することに関しては、私はそれがうまくいくとは思いません。つまり、すべてをリダイレクトしたくないので、特定のREQUEST_URIを確認する必要があります。

ただし、このソリューションを、必要な他のリダイレクトのテンプレートとして使用できます。これらの数が非常に多い場合(または将来的に多数になると予想される場合)は、リダイレクトやカスタムコーディングなしでこのシナリオを処理するため、代わりに ドメインアクセスモジュール に切り替えることを検討してください。

TLSを使用している場合は、メインドメインと一致するように「example.com」を更新する必要があり、「http」を「https」に変更する必要がある場合があります。

// 301 Redirect from /suggestions to example.com/suggestions
if ($_SERVER['HTTP_Host'] != 'example.com' &&
  $_SERVER['REQUEST_URI'] == 'suggestions' &&
  (php_sapi_name() != "cli")) {
    header('HTTP/1.0 301 Moved Permanently');
    header('Location: http://example.com/suggestions');
    exit();
  }

// 301 Redirect from /suggestions/* to example.com/suggestions/*
if ($_SERVER['HTTP_Host'] != 'example.com' &&
    $_SERVER['REQUEST_URI'] == 'suggestions' &&
    (php_sapi_name() != "cli")) {
      $url = $_SERVER['REQUEST_URI'];
      $url = substr($url, 13); // stripping '/suggestions/' which is 13 chars
      header('HTTP/1.0 301 Moved Permanently');
      header('Location: http://example.com/suggestions/'. $url);
      exit();
  }
1
Anne Bonham

これは、Drupalルートディレクトリにある.htaccessファイルに書き込まれる書き換えルールです。

RewriteEngine on
# Rule for /suggestions.
RewriteCond %{REQUEST_URI} /suggestions
RewriteRule ^(.*) http://example.com/suggestions [L,R=301]

# Rule for /site-map.
RewriteCond %{REQUEST_URI} /site-map
RewriteRule ^(.*) http://example.com/site-map [L,R=301]

#Rule for more links.
...
...
0
Ashish Deynap