web-dev-qa-db-ja.com

modxベースのサイトが一部のコンテンツに異なるドメインを使用し始めるのはなぜですか?

状況

複数のドメイン名とサブドメイン名を持つVPSに modx サイトがあります。 modxサイトは、「プライマリ」ドメイン名の「プライマリ」サブドメイン、つまりwww.intendedname。tldを使用する必要があります。問題は、時間が経つにつれて、サイトがビデオ、画像、さらにはページや(内部)リンクなどのコンテンツへのリンクに別のサブドメインを不思議に使用し始めることです。他のサブドメインはもちろんこのコンテンツを提供しません。 modxキャッシュをクリアすると、元の状態が復元されます。ただし、問題は後で再び発生します。

VPSにはドメインが登録され、サブドメインとしてVPSのIPを指す複数のAレコードがあります。パブリックコンテンツサーバーとして使用することを意図した「プライマリ」ファンがあります。他のものはdocs.test.などに似ています。

その上に、私はdynamic-dnsサービスclientをマシンのno-ipからインストールし、動的ドメイン名をバインドしています。それは完全に異なるドメイン名を与えます。私はもともとsshログインに使用し、まったく異なるサイトを提供していました。

nginxserver は、さまざまなサブドメインを適切な場所に書き換えるために適切に使用されます。

editmodxテンプレートは<base href="[[++site_url]]" />を使用するテンプレートを使用します。

現在修正する試み

問題に対する現在の「解決策」は、書き換えを使用してeverythingを「プライマリ」ドメインとサブドメインに書き換えることです。サイトのnginx構成ファイルでは、rewritedirective を(当然)使用して、予期しないserver_nameentries (つまり、他のサブドメイン)を書き換えますserverblock このタスク専用。

したがって、これを使用すると、メインサイトは基本的に機能しますが、他のすべての機能(ドキュメント)は役に立たなくなります。

この書き換えが設定される前の「解決策」は、modxキャッシュを定期的にクリアすることでした。元のmodxコンテンツは破損していません。キャッシュ内のファイルのみが破損しています。

実際に問題が何であるかを見つけて修正するにはどうすればよいですか?

2
n611x007

MODxテンプレートで動的ベースhrefプロパティを使用していますか?その場合、これをベースhrefにしたい実際のWebサイトアドレスに設定し、MODxキャッシュをクリアすると、すべての設定が完了します。

1
MonkeyBlue

アーロンが示唆するように、それはベースhref問題のように聞こえます。

ただし、<base href="http://domain.tld">にハードコードすることは誰にも勧めません。サイトをステージング環境にコピーしたり、サイトを他の場所に移行したりする場合、これは苦痛です。

代わりに、単純な解決策は、ベースhref値を動的に解決し、キャッシュされないようにすることです:<base href="[[!++site_url]]">。これを、使用すべきではないドメインからの書き直しと組み合わせると、うまくいくはずです。

1
Mark Hamstra