0

私は興味深い状況に取り組んでいます。何が起こっているのか:

現在のURL例1:

www.domain.com/red-widgets-cid-1234.html

www.domain.com/red-widgets-cid-1234-1.html

www.domain.com/red-widgets-cid-1234-1-1.html

上記のすべてのURLで正規:

www.domain.com/red-widgets-cid-1234.html

New URL:
www.domain.com/red-widgets-cid-4567.html

現在のURLの例2:

www.domain.com/red-widgets-cid-1234+10.html

www.domain.com/red-widgets-cid-1234+10-1.html

www.domain.com/red-widgets-cid-1234+10-1-1.html

上記のすべてのURLで正規:

www.domain.com/red-widgets-cid-1234+10.html

New URL:
www.domain.com/red-widgets-cid-6789.html

上記のURLのすべてのバリエーションが新しいURLにリダイレクトされることを確認したいと思います。これらに取り組むために使用できるワイルドカード301リダイレクト/正規表現は何ですか?

4

1 に答える 1

0

これを試してください(テストしていません):

  # (perhaps you need to escape "+" as "\+",
  # - can you really have a "+" in the URL?)

  RewriteCond %{REQUEST_URI} ^/red-widgets-cid-1234+10+5(.*).html [NC]
  RewriteRule (.*) %{HTTP_HOST}/american-red-widgets-cid-6789+5%1.html [QSA,L]

  RewriteCond %{REQUEST_URI} ^/red-widgets-cid-1234+10(.*).html [NC]
  RewriteRule (.*) %{HTTP_HOST}/red-widgets-cid-6789%1.html [QSA,L]

  RewriteCond %{REQUEST_URI} ^/red-widgets-cid-1234(.*).html [NC]
  RewriteRule (.*) %{HTTP_HOST}/red-widgets-cid-4567%1.html [QSA,L]

重要なことは、最初に最も長い「一般的な」URL をテストすることです。
%1last からの最初の正規表現を意味しRewriteCondます。
$1current からの最初の正規表現を意味しRewriteRuleます。

注意!RewriteCond によってキャッチされるすべての URL で新しい URL が同じである必要がある場合は、スキップする%1必要があります。これは、必要な場合にのみ必要ですamerican-red-widgets-cid-6789+5-1.htmlred-widgets-cid-1234+10+5-1.html

于 2013-02-05T19:09:50.110 に答える