2017-08-25 193 views
-1

如何重定向以删除域名和.html文件名称之间的所有中间文件夹,而不必在每个重定向中明确添加多个规则。Apache&NGINX重定向

基本上我希望两个:

example.com/category/product.html
example.com/category/sub-category/product.html

重定向到

example.com/product.html

我还想:

example.com/category/subcategory.html

重定向到

example.com/category.html

我没有一个逻辑的方式来区分子类别.h tml和product.html,所以我打开显式匹配(或不匹配)列出子类别。

我想为apache和nginx的重写样式完成此操作。

+0

我能够使用RedirectMatch 301正确地重定向/category/product.html“^/category(/.*)\。html $”“$ 1.html”但我不能处理类别/子类别的情况。它将这些重定向到子类别/ product.html –

+0

您是否有一种区分'product.html'和'subcategory.html'的逻辑方法?例如,'product.html'将只包含产品ID或数字。 – abskmj

+0

好点,我不认为我可以。至少对我而言,这不是一件很明显的事情。在这种情况下,我需要明确指定子类别。这不是太糟糕,只有大约5/6,他们是主要类别相同。我将编辑主要问题以反映这一点。 –

回答

1

您可以按以下顺序使用这些正则表达式:

^\/(category)\/(subcategory|subcategory2|subcategory3)\.html$ - >/$1.html重定向到example.com/category/subcategory.htmlexample.com/category.htmlSee Online

^\/(category)\/.*?([^\/]+)\.html$ - >/$2.html用于重定向example.com/category/product.htmlexample.com/category/sub-category/product.htmlexample.com/product.htmlSee Online

您可以用实际值替换categorysubcategory

+0

只要他们为了他们应该工作,对吧?因为如果第一个正则表达式不首先执行,那么第二个正则表达式将遇到它将失败的情况。 –

+0

顺便说一句,我认为,正则表达式测试网站是太棒了!我希望我前一阵子知道! –

+0

你明白了,订单是这里的关键。 – abskmj