14

httpサイトを からに変更したいと考えていましたhttps。いつも。

したがって、それに応じてApacheを構成しました。サイトの URL ( https://steamnet.de ) を入力すると、インデックス サイトは正常に読み込まれますが、参照されている要素 (CSS、画像など) は読み込まれません。

base hrefが設定されていて、そこでhttp://steamnet.de/使用されていないため、そうしているように思えますhttps。混合コンテンツをロードしないように Firefox を構成しました。

base hrefでは、Joomla に to を設定するhttps://steamnet.de(または、サイトを完全に作成する) ように指示するにはどうすればよいsslですか?

$force_ssljoomla 構成のグローバル ssl 強制要素 (ドイツ語では「SSL erzwingen」、英語では「すべて」) を「すべて」に設定しようとしましたが、サイト自体にリダイレクトするconfiguration.php無限エラーでサイトが壊れます。(後付けとして:ここの代わりに303を見つけて驚いた。誰かがそれを説明できればありがたい)303301

( Laoneoはいくつかの解決策を提案しましたが、うまくいきませんでした。完全を期すために、ここにリストを示します)

  1. URLに設定$live_siteします。https
  2. $sef変更して$sef_rewrite役立つかどうかを調べます。

Apache ログ: access.log

91.42.221.000 - - [03/Nov/2013:12:41:25 +0100] "GET / HTTP/1.1" 303 4854 "-" "Mozilla/5.0 (Gecko) Firefox/64"
91.42.221.000 - - [03/Nov/2013:12:41:25 +0100] "GET / HTTP/1.1" 303 516 "-" "Mozilla/5.0 (Gecko) Firefox/64"
91.42.221.000 - - [03/Nov/2013:12:41:25 +0100] "GET / HTTP/1.1" 303 516 "-" "Mozilla/5.0 (Gecko) Firefox/64"

error.logアクセスには何も含まれていませんが、次の行が含まれていますreload

[Sun Nov 03 12:41:16 2013] [notice] Graceful restart requested, doing restart
[Sun Nov 03 12:41:16 2013] [error] (9)Bad file descriptor: apr_socket_accept: (client socket)
[Sun Nov 03 12:41:17 2013] [warn] RSA server certificate CommonName (CN) `Angelo Neuschitzer' does NOT match server name!?
[Sun Nov 03 12:41:17 2013] [notice] Apache/2.2.16 (Debian) PHP/5.3.3-7+squeeze17 with Suhosin-Patch proxy_html/3.0.1 mod_ssl/2.2.16 OpenSSL/0.9.8o configured -- resuming normal operations
4

4 に答える 4

23

申し訳ありませんが、現在の回答は本当に正しいとは思いません。この回答はハッキングを促進し、問題を回避します。次回 Joomla を更新するときは、コア ファイルが上書きされるため、コア ファイルを更新する必要があります。

実際、getInstance の JURI のコードを見ると、次のことがわかります。

// Determine if the request was over SSL (HTTPS).
if (isset($_SERVER['HTTPS']) && !empty($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS']) != 'off'))
{
        $https = 's://';
}
else
{
        $https = '://';
}

問題は、なぜ $_SERVER['HTTPS'] が明らかに初期化されていないサーバーがあるのか​​ということです。理由はわかりませんが、動作することがわかったのは、次の行を .htaccess ファイルの先頭に追加することです。

<IfModule mod_env.c>
   SetEnv HTTPS on
</IfModule>

これを行うと、$_SERVER['HTTPS'] が初期化されたように見え、Juri::current は期待どおりの URL (https で始まる URL) を返します。

于 2015-05-19T11:12:21.123 に答える
7

configuration.php ファイルの *$live_site* 変数を確認し、https アドレスに変更します。

于 2013-11-02T13:08:36.273 に答える
5

注意: これはハックです。最初にダニエル・ディミトロフの回答をテストしてください。動作する場合は、ここにコメントを残してください。

回避策を見つけました。

ファイルincludes/application.phpで、次のブロックを変更しました

if($router->getMode() == JROUTER_MODE_SEF) {
   $document->setBase(JURI::current());
}

に:

if($router->getMode() == JROUTER_MODE_SEF) {
   $document->setBase(JURI::root());
}

が代わりに URL をJURI::current()返す理由はわかりませんが、その後、サイトは期待どおりに機能します。httphttps

注意:その後、管理者の部分を変更すると、無効force_sslにするまで管理者の部分が壊れていましたconfiguration.php。私は自分のApache構成でSSLを強制しているので、それは私にとって問題ではありませんでした.

于 2013-11-03T20:33:01.953 に答える
0

<base>タグを完全に削除すると、問題が解決するはずです。index.php次のように、テンプレートのファイルでこれを行うことができます。

$doc = JFactory::getDocument();
unset($doc->base);

これはコア ハックではないため、アップグレード防止になります。ただし、テーマ ストアのテンプレートを使用していて、将来テンプレートをアップグレードすることを選択した場合は、コードを追加し直す必要がある場合があります。


参考文献:

于 2017-06-06T15:20:46.490 に答える