我有一个网站,例如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更改时重定向无法正常工作。您将如何解决这个问题?任何帮助表示赞赏!
答案 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