htaccess重定向-如何匹配多字字符串的开头而不是结尾?

时间:2018-07-31 19:14:20

标签: apache .htaccess redirect

情况:为某些具有相似URL的过时产品创建.htaccess重定向。

问题:较短的SKU与较长的SKU匹配,最终结果是将多个URL重定向到同一页面。

通常很难解释,所以这里有一个例子:

可能的旧/无效网址:

  • WIDGET001.php
  • widget-WIDGET001.php
  • widget-WIDGET001-RED.php
  • widget-WIDGET001-BLUE.php

URL的开头还可能包含其他内容,例如“ blue-widget-WIDGET001-BLUE.php”或“ large-widget-WIDGET001-BLUE.html”-这是“ WIDGET001-BLUE”字符串,很重要。

新网址:

问题:“ WIDGET001”触发并将所有3(纯色,红色和蓝色)重定向到同一页面。我需要他们重定向到每个人自己的特定页面。

当前语法:

RewriteRule ^(WIDGET001)$ https://example.com/widgets/widget-001/ [L,NC,R=301]
RewriteRule ^.*(WIDGET-001-BLUE).*$ https://example.com/widget/widget-001-blue/ [L,NC,R=301]
RewriteRule ^.*(WIDGET-001-RED).*$ https://example.com/widget/widget-001-red/ [L,NC,R=301]

所有这3个重定向到https://example.com/widgets/widget-001/

首先放置第一个(按照它们在htaccess文件中出现的顺序)无效。

我如何让htaccess识别所有3种不同的情况,并将每种情况定向到正确的页面?

0 个答案:

没有答案