2

我正在尝试使用 htaccess 和 %{REQUEST_URI} 参数处理 URL。我研究了很多,使用htaccess.madewithlove.be和一个虚拟机构建规则并测试没有成功。

请求网址是:

1) www.example.com.br/category/product/Beer?id=16

请求 URL 的另一个示例以更好地理解:

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 指令进行分离。任何人都知道如何解决这个问题?

问候,

4

1 回答 1

0

你不需要条件 onREQUEST_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]
于 2014-10-05T08:46:37.967 回答