我尝试使用htaccess和%{REQUEST_URI}参数处理网址。我研究了很多,使用htaccess.madewithlove.be和一个虚拟机来构建规则并测试没有成功。
请求网址为:
1)www.example.com.br/category/product/Beer?id=16
提供更好理解的请求网址的示例:
2)www.example.com.br/category/product/Wine?id=33
我创建的规则是:
RewriteCond %{HTTP_HOST} ^(.*)example\.com\.br$
RewriteCond %{REQUEST_URI} ^(.*)category/product/(.*)$
RewriteRule ^(.*)$ http://www.mynewsite.com.br/category/product/luxe-product/$1? [R=301,L]
预期的重写是:
1)www.mynewsite.com.br/category/product/luxe-product/Beer
2)www.mynewsite.com.br/category/product/luxe-product/Wine
但是,使用此规则输出URL为:
1)www.mynewsite.com.br/category/product/luxe-product/category/product/Beer
2)www.mynewsite.com.br/category/product/luxe-product/category/product/Wine
在这种情况下,我几乎没有将类别/产品放在输出中以简化,因为我无法使用$ 0,$ 1和$ 2指令分开。任何人都知道如何解决这个问题?
此致
答案 0 :(得分:0)
REQUEST_URI
您不需要条件,因为您可以在RewriteRule
中对其进行匹配。
相反,您可以使用此规则
RewriteCond %{HTTP_HOST} example\.com\.br$ [NC]
RewriteRule ^category/product/([^/]+)$ http://www.mynewsite.com.br/category/product/luxe-product/$1? [R=301,L]
或者你可以像你一样使用REQUEST_URI
(两者都是正确的)
RewriteCond %{HTTP_HOST} example\.com\.br$ [NC]
RewriteCond %{REQUEST_URI} ^/category/product/([^/]+)$ [NC]
RewriteRule ^ http://www.mynewsite.com.br/category/product/luxe-product/%1? [R=301,L]