2

URL を htaccess と %{REQUEST_URI} パラメータで処理しようとしています。私は多くのことを調査し、htaccess.madewithlove.be と仮想マシンを使用してルールを構築し、成功せずにテストしました。

リクエスト URL は次のとおりです。

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/ワイン

ただし、このルールを使用すると、出力 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

REQUEST_URIで一致させることができるので、条件 on は必要ありません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 に答える