1

「コードを URL に保存」オプションをオンにしました (管理者 -> システム -> 構成 -> Web -> URL オプション)。

問題は、ストアコードなしでホームページにアクセスすると機能することです。両方の例が機能することを意味します: http://example.com/ http://example.com/code/ ただし、最初の URL (店舗コードなし) は、店舗コードを含む URL にリダイレクトする必要があります。書き換えルールを htaccess に入れようとしましたが、成功しませんでした。さまざまな可能性を試しました。

Magento ビルドの書き換えルールは役に立たないようです。「/」を「code」に書き換えてみましたが、「/code/code」という URL サフィックスが付きます。

4

1 に答える 1

4

この動作の理由は、 に記載されていMage_Core_Model_Url_Rewrite::rewriteます。ストア コードのないベース URL のリダイレクトはありません。

以下はかなり醜い解決策ですが、あなたの場合はうまくいくはずです。要求 URI に現在のストア コードが見つからない限り、ストア コードを含むベース URL にリダイレクトされます。

アプリ/コード/ローカル/Danslo/RedirectToStore/Model/Observer.php:

<?php

class Danslo_RedirectToStore_Model_Observer
{

    public function redirectToStore($observer)
    {
        $request    = $observer->getFront()->getRequest();
        $storeCode  = Mage::app()->getStore()->getCode();
        $requestUri = $request->getRequestUri();

        if (strpos($requestUri, $storeCode) === false) {
            $targetUrl = $request->getBaseUrl() . '/' . $storeCode;
            header('HTTP/1.1 301 Moved Permanently');
            header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
            header('Pragma: no-cache');
            header('Location: ' . $targetUrl);
            exit;
        }
    }

}

アプリ/コード/ローカル/Danslo/RedirectToStore/etc/config.xml:

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <global>
        <events>
            <controller_front_init_before>
                <observers>
                    <redirect_to_store>
                        <class>Danslo_RedirectToStore_Model_Observer</class>
                        <method>redirectToStore</method>
                        <type>singleton</type>
                    </redirect_to_store>
                </observers>
            </controller_front_init_before>
        </events>
    </global>
</config>

app/etc/modules/Danslo_RedirectToStore.xml:

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <Danslo_RedirectToStore>
            <active>true</active>
            <codePool>local</codePool>
        </Danslo_RedirectToStore>
    </modules>
</config>
于 2012-05-07T11:45:17.157 に答える