1

我的.htaccess 有一个小故障。我用谷歌搜索并尝试了一些没有任何结果的东西,所以我不得不求助于SOF

考虑遵循 htaccess 规则;

# CATEGORY LISTING
ReWriteRule ^listing/category/(.*)/(.*)/(.*)/(.*) ?module=listing&type=category&get=$1&c_id=$2&c_name=$3&page=$4 [L]

ReWriteRule ^listing/category/(.*)/(.*)/(.*) ?module=listing&type=category&get=$1&c_id=$2&c_name=$3 [L]

# CATEGORY FILTER
ReWriteRule ^listing/category/(.*)/(.*)/(.*) ?module=listing&type=category&orderType=$1&order=$2&page=$3 [L]

ReWriteRule ^listing/category(.*)/(.*) ?module=listing&type=category&orderType=$1&order=$2 [L]

ReWriteRule ^listing/category/(.*) ?module=listing&type=category&page=$1 [L]

ReWriteRule ^listing/category ?module=listing&type=category [L]

这里的问题是 2 条规则相互冲突;

本规则;

ReWriteRule ^listing/category/(.*)/(.*)/(.*) ?module=listing&type=category&get=$1&c_id=$2&c_name=$3 [L]

与本规则冲突;

ReWriteRule ^listing/category/(.*)/(.*)/(.*) ?module=listing&type=category&orderType=$1&order=$2&page=$3 [L]

有没有办法解决这个冲突?

感谢您的帮助。

4

1 回答 1

2

有没有办法解决这个冲突?

为了解决这个问题,您需要使get查询字符串和order查询字符串的 URI 互斥。您对它们都有完全相同的正则表达式,因此永远不会应用第二个正则表达式,因为与第二个匹配的任何内容都将由第一个处理。

例如,您可以使其中一个看起来像:/order/category/(.*)/(.*)/(.*)而另一个/listing/category/(.*)/(.*)/(.*). 这两个 URI 是互斥的,永远不会冲突。

此外,您应该将所有内容更改(.*)([^/]*),因为(.*)它不贪心并且会吞噬额外的路径。

于 2013-01-13T03:29:21.577 回答