一个位置不同条件的三个重写规则

时间:2014-11-06 15:31:00

标签: .htaccess

我想在其所拥有的参数帐户上重定向以相同单词开头的URL。只需看看我的代码。

RewriteEngine On
RewriteRule ^products/([^/]+) /$1.php
RewriteEngine On
RewriteRule ^products/([^/]+)/([^/]+)/([^/]+) /$1.php?ref=$3
RewriteEngine On
RewriteRule ^products/([^/]+)/([^/]+)/([^/]+)/([^/]+) /$1.php?refsub=$4

如果网址与/products/xyz类似,我希望将其重定向到/xyz.php

如果网址与/products/xyz/abc/11类似,我希望将其重定向到xyz.php?ref=11

如果网址与/products/xyz/abc/def/111类似,我希望将其重定向到xyz.php?refsub=111

我已尝试使用代码&它不工作。这有什么缺陷吗?有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

我认为问题在于所有路线都与第一条路线相匹配,所以它们都会停在那里。您可以对它们进行反向排序,因此它们必须首先匹配最明确的路径:

RewriteEngine On
RewriteRule ^products/([^/]+)/([^/]+)/([^/]+)/([^/]+) /$1.php?refsub=$4
RewriteRule ^products/([^/]+)/([^/]+)/([^/]+) /$1.php?ref=$3
RewriteRule ^products/([^/]+) /$1.php

或者您只需添加网址结束标记:

RewriteEngine On
RewriteRule ^products/([^/]+)/?$ /$1.php
RewriteRule ^products/([^/]+)/([^/]+)/([^/]+)/?$ /$1.php?ref=$3
RewriteRule ^products/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ /$1.php?refsub=$4