2012-08-14 99 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