在发生RedirectRule之后重定向到其他网站

时间:2019-03-21 17:23:59

标签: .htaccess

我有一个网站,例如www.example.com,但以前是www.example.nl。来自www.example.nl的所有流量现在都被重定向到www.example.com,但是随着我们更改某些命名约定,www.example.nl/seeds现在必须重定向到www.example.com/nl/flower-seeds

我得到的.htaccess文件包含以下代码: RewriteEngine On
RewriteBase
RewriteCond %{HTTP_HOST} !example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L, R=301]

Redirect 301 /seeds/(.*) example.com/nl/flower-seeds/$1

当我导航到www.example.nl/seeds/时,我会到达www.example.com/seeds/,它以404结尾,因为我缺少/nl/flower-部分。

我认为URL已被RewriteRule更改时重定向无法正常工作。您将如何解决这个问题?任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

您应从以下一般规则中排除/seeds/目录:

RewriteEngine On

RewriteCond %{HTTP_HOST} !example.com$ [NC]
RewriteCond %{REQUEST_URI} !/seeds/(.*)
RewriteRule ^(.*)$ http://www.example.com/$1 [L, R=301]

RewriteCond %{HTTP_HOST} !example.com$ [NC]
RewriteRule ^seeds/(.*)$ http://www.example.com/nl/flower-seeds/$1 [L, R=301]

注意:清除浏览器缓存,然后进行测试

另外,不要像以前那样将正则表达式与重定向一起使用:

Redirect 301 /seeds/(.*) example.com/nl/flower-seeds/$1

这里(.*)没有意义,您可以使用RedirectMatch or RewriteRule