私のメインサイトは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/suggestions
。 http://one.example.com/suggestions
&http://two.example.com/suggestions
サブドメインにいるとき。
しかし、それはすべてのサブドメインに対してのみhttp://example.com/suggestionsにする必要があります
これを達成する方法はありますか?
.htaccessではなく、sites/default/settings.phpにリダイレクトを追加したい(パンテオンが.htaccessリダイレクトを無視し、私のサイトの多くがPantheonでホストされているため)。構文にも慣れています。
最初の例では、/ suggestionsだけをexample.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();
}
これは、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.
...
...