5

HTTPS を使用している場合でも、Magento の getProductUrl() は常に HTTP URL を返すようです。この自動切り替えを HTTPS にする方法はありますか? (または、相対プロトコル URL を返すようにします)。

むしろ「標準的な」構成だと思います。

ベース URL はhttp://example.com/

安全な URL はhttps://example.com/です

[フロントエンドでセキュア URL を使用する] は [いいえ] です

ベースリンク URL は {{unsecure_base_url}} です

上記を {{secure_base_url}} に変更できることは承知していますが、HTTP から HTTPS への変更を強制したくありません。相対的なままにする必要があるだけです。

4

4 に答える 4

13

Magento の主な利点は、Magento でやりたいことが何でもできることです:) そうです、HTTPS 製品の URL または相対 URL を出力できます。ただし、ソリューションを選択する前に、Magento の作成者のビジョンについて考えてみましょう。

フロントエンドの HTTPS は、顧客アカウント、支払い方法、チェックアウトなどの特定の領域でのみ機能するように設計されています。製品についてそれほどプライベートなことは何もないため、HTTPS 経由で表示する必要もあります。

デフォルトでは、Magento はページに対しても HTTPS を使用しません (前述)。HTTPS をオンにするには、[フロントエンドで安全な URL を使用する] オプションを [はい] に設定する必要があります。説明したように、これは、一部のプライベート データを含む限られたページ セットでのみ HTTPS を使用します。

したがって、最適なソリューションは、開発しているストアの詳細によって異なります。

1) フロントエンドのすべてのページで HTTPS を使用する場合 - 最善の解決策は、「安全でない」Web URL 構成の「ベース URL」オプションに「https://...」を入れることです。

2) 製品リンクと限られた数のページに対してのみ HTTPS を有効にしたい場合は、そのページのテンプレートをオーバーライドして相対 URL を配置できます。実際のコードは、好きなように実装できます。すでに提案されている最も単純な方法でも問題ありません。

echo trim($_product->getProductUrl(),'http:')

3) フロントエンドですべての製品リンクに HTTPS を使用する場合 - 最善の方法は、Mage_Catalog_Module_Product_Urlモデルをオーバーライドしてメソッドを変更するgetUrl()ことです - そこに配置する必要があります

$routeParams['_secure'] = true;

これにより、HTTPS プロトコルを使用してすべての製品 URL が生成されます。

4) HTTP ページでのみ HTTP 製品リンクを表示し、HTTPS ページでのみ HTTPS 製品リンクを表示する必要がある場合は、方法 3) をより洗練されたロジックで使用できます。「_secure」パラメータを設定する前に、現在のページのプロトコルを確認してください。

それが役に立てば幸い。

于 2012-09-24T09:29:34.123 に答える
1

私は原始的な方法でそれをやっただけで、時にはそれが最もうまくいく:

echo trim($_product->getProductUrl(),'http:')
于 2012-09-21T00:22:23.223 に答える
-2

System | には、控えめではあるが重要なオプションがあります。構成 | Web ~ 「フロントエンドで安全な URL を使用する」と言わなければならない場所 -- これを yes に設定すると、https によってロードされたページは https リンクを使用します。

ほとんどの場合、コードを記述したり、追加の構成を提供したりする必要はありません

于 2014-12-23T12:14:16.200 に答える