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


Using RewriteCond and RewriteRule to redirect one page

当用户导航到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)

有人能看看我做错了什么吗?

-编辑-

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

我希望这能澄清问题——这很复杂。

删除前导斜杠:

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]

尽管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多商店网站很有用。