1

私の質問は非常に単純だと思いますが、過去数時間、頭を壁にぶつけていました。

私は自分のウェブサイトで rewriteule を使用して、php 変数を含む乱雑なパス名がきちんと整頓されていることを確認しています ([http://www] を例から削除しました。これは、システムがリンクを配置していると見なし、許可しないためです)。

したがって、誰かが mysite.co.uk/my-product-P1.html の私のサイトに来て、ウェブサイトは mysite.co.uk/product.php?id=1 をサーバーに投稿することを知っています。

でも逆に整理したい。古い顧客または古いリンクがパス名 mysite.co.uk/product.php?id=1 を使用している場合、古いパス名が代わりに mysite.co.uk/my-product-P1.html を返すようにしたい実際にはまだ動作します。顧客が異なるパス名から同じページにアクセスするのは望ましくありません。

これを行うにはどうすればよいですか?ループが作成されますか? 別のWebサイトでは、次を使用して動作しています:

RewriteCond %{QUERY_STRING} ^id=1$ [NC]
RewriteRule ^product\.php$ product-P1.html? [R=301,L]

しかし、そのサイトには約10の製品しかないので、製品ごとにこれらの行を書くことができます. 私の他のサイトには何百もの製品があるため、これは実用的ではなく、自動的に行う必要があります。

うまくいけば、これは理にかなっています。他の投稿を読んだことがありますが、解決策が見つからないため、別の場所で明確に説明されている場合はお詫び申し上げます。

4

2 に答える 2

0

次の追加ルールが必要です。

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+product\.php\?id=([^\s&]+) [NC]
RewriteRule ^ /product-P%1.html? [R=302,L]
于 2013-10-16T15:07:45.683 に答える