2012-08-14 102 views
0

我在Nginx Web服務器上安裝了Magento v1.4.1.1。我試圖改寫以下動態網址:重寫動態Magento URL

#5028 is the dynamic id passed in the URL 
$baseUrl/design/index/index/design_id/5028 

要:

$baseUrl/my/design/5028 

我已經使用了Magento的「URL重寫管理」重寫靜態URL,不會有問題。但似乎我不能使用動態參數。

我也試着做Nginx的配置下面我server{}位置

rewrite ^/my/designs/([0-9]+)$ /design/index/index/design_id/$1 last; 

內,但它沒有得到接球,我不斷收到404錯誤,如果我試圖訪問http://mysite.com/my/design/5028

的另一條規則旁邊的這一個完美的作品

rewrite ^(/fb)/design/([0-9]+)$ $1/landing_no_contest.php?design_id=$2? last; 

感謝您的幫助。

回答

2

是的,Magento的「URL重寫管理」不是支持動態鏈接afaik。

您可以以編程每design_id靜態重寫添加到它,但:

$iStoreId = 1; 
$sOptions = 'RP'; // 'RP' for a 301, or 'R' for a 302 
$aDesignId = array(5026, 5027, 5028); 

foreach ($aDesignId as $iDesignId) { 
    Mage::getModel('core/url_rewrite') 
     ->setStoreId($iStoreId) 
     ->setCategoryId(null) 
     ->setProductId(null) 
     ->setIdPath(str_replace('0.', '', str_replace(' ', '_', microtime()))) 
     ->setRequestPath('design/index/index/design_id/' . $iDesignId) 
     ->setTargetPath('my/design/' . $iDesignId) 
     ->setIsSystem(0) 
     ->setOptions($sOptions) 
     ->save(); 
} 
+0

感謝您的答覆。我必須在哪裏添加此代碼?我現在關心的是,我有5k +的設計,那麼我需要創建5k +靜態重寫?你知道是否有方法使用正則表達式來註冊路線,我知道我所有的design_id都是整數值。 – mbenegas 2012-08-16 01:07:35

+0

我雖然每當它載入頁面時我都註冊了這些路由,現在我看到我將它保存在'core_url_rewrite','Mage :: getModel('core/url_rewrite')'謝謝這很好!所以解決方案是註冊一次我現有的設計,然後爲每個新創建的設計添加一個新的靜態重寫。 – mbenegas 2012-08-16 17:03:35