此行爲的原因可以在Mage_Core_Model_Url_Rewrite::rewrite
中找到。沒有商店代碼的基本網址沒有重定向。
下面是一個非常不好的解決方案,但它應該適用於您的情況。
應用程序/代碼/本地/ Danslo/RedirectToStore /型號/ 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;
}
}
}
只要當前存儲器代碼不是在請求URI發現它重定向到基本URL包括商店代碼
應用程序/代碼/本地/ 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>
應用的/ etc /模塊/ Danslo_RedirectToStore.xml:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<Danslo_RedirectToStore>
<active>true</active>
<codePool>local</codePool>
</Danslo_RedirectToStore>
</modules>
</config>
你有'自動重定向到基本URL'設置爲是? –
是的,但是我的基本URL不包含代碼(它用於目錄路徑,所以我不認爲我應該改變它)。 – Fisher