使用RewriteCond和RewriteRule重定向一个页面

时间:2013-11-22 16:27:04

标签: php .htaccess magento redirect

当用户导航到http://mydomain.nl/nl/my-page/

我需要将用户重定向到http://mydomain.nl/fnl/my-page/

这是因为我正在开发的网站是一个多商店多语言Magento网店,由我之前的某个人错误配置,因此每种语言都有自己的商店范围,而不是每个商店都有其语言范围

我的.htaccess中有以下代码:

RewriteCond %{HTTP_HOST} ^mydomain\.nl$ [NC]
RewriteRule ^/nl/terms-and-conditions-of-use/ http://mydomain.nl/fnl/terms-and-conditions-of-use/ [NC,QSA,R]

基本上,我认为这样做是检查它是否在正确的域(即mydomain.nl),然后重定向URL,以便用户看到正确的页面。

重定向无效。如果我点击它 - 它会带我回到主域名的主页(然后是另一个域名.nl)

有人可以看看它,看看我做错了吗?

- 编辑 -

adomain.nl上安装了一个Magento安装 - 有多个商店设置了不同的域指向它们。所以mydomain.nl在技术上是adomain.nl/mydomain,是Magento本身的第二家商店。我想将mydomain.nl/nl/ 任何指向mydomain.nl/fnl/请求哪个页面。在.htaccess中,我需要指定我只希望在mydomain.nl而不是domain.nl上完成此操作

我希望这可以解决问题 - 这很复杂。

2 个答案:

答案 0 :(得分:1)

删除前导斜杠:

RewriteCond %{HTTP_HOST} !^(www\.)?adomain\.nl$ [NC]
RewriteRule ^nl/(terms-and-conditions-of-use)/ /fnl/$1/ [NC,L,R]

或者更通用:

RewriteCond %{HTTP_HOST} !^(www\.)?adomain\.nl$ [NC]
RewriteRule ^nl/(.+) /fnl/$1 [NC,L,R]

答案 1 :(得分:0)

尽管anubhava的回答类似,但这对我有用:

RewriteCond %{HTTP_HOST} ^domain\.nl$ [NC]
RewriteRule ^nl/terms-and-conditions-of-use/ /fnl/terms-and-conditions-of-use/ [NC,L,R]

只需将访问http://domain.nl/nl/terms-and-conditions-of-use/的任何人重定向到http://domain.nl/fnl/terms-and-conditions-of-use,并且仅在用户访问domain.nl时执行此操作 - 仅对一个.htaccess文件的Magento多商店网站有用。