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

问题描述 投票:0回答:1

我有一个网站,让我们说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-部分。

我认为当RewriteRule已经改变了URL时,Redirect无法正常工作。你会如何解决这个问题?任何帮助表示赞赏!

.htaccess
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.