好的,所以我需要找到我想要做的正确语法。
这些链接:
http://www.example.com/sub1/sub2/product1/
(...)
http://www.example.com/sub1/sub2/product700/
需要重定向到
http://www.example.com/sub3/product1-newsite/
(...)
http://www.example.com/sub3/product700-newsite/
我尝试过:
RewriteEngine On
RewriteRule ^/sub1/(.*)/(.*)$ http://www.example.com/subdir/$1-newsite/ [R=301,L]
适用于所有700种产品。 另外,我需要对某些产品进行检查。
有人能看出我做错了吗?
答案 0 :(得分:0)
我认为这只是正则表达式上的编号问题。
$ 1是第一个匹配的组,$ 2是第二个,等等。$ 0表示匹配的整个字符串(即整个路径)。
尝试:
RewriteEngine On
RewriteRule ^/sub1/sub2/(.*)$ http://www.example.com/subdir/$1-newsite/ [R=301,L]
或
RewriteEngine On
RewriteRule ^/sub1/(.*)/(.*)$ http://www.example.com/subdir/$2-newsite/ [R=301,L]
修改强>
啊......有一个想法......捕获中的第一个正则表达式可能有点过于贪婪...因为它可以匹配:
^/sub1/[sub2/product1-newsite]/[]
因此$ 1将为sub2/product1-newsite
而$ 2将为空(。*可以很高兴地匹配任何内容)。
所以我们需要确保它不会抓得太多。
RewriteEngine On
RewriteRule ^/sub1/([^/]+)/(.+)/$ http://www.example.com/subdir/$2-newsite/ [R=301,L]
将*
更改为+
可确保我们至少匹配一个字符。
将.
更改为[^/]
可确保我们匹配"除了/"之外的所有内容。
在最后添加/
以确保$ 2不会捕获尾随斜杠。
应该有希望解决它。