我的.htaccess有一个小故障。我用Google搜索并尝试了一些没有任何结果的事情,所以我不得不求助于 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]
无论如何都要解决这个冲突?
感谢您的帮助。
答案 0 :(得分:2)
无论如何都要解决这个冲突?
要解决此问题,您需要使get
查询字符串和order
查询字符串的URI互斥。你有两个完全相同的正则表达式,所以第二个将永远应用,因为任何与第二个匹配的东西都只会被第一个处理。
例如,您可以将其中一个看作:/order/category/(.*)/(.*)/(.*)
和另一个/listing/category/(.*)/(.*)/(.*)
。这两个URI是互斥的,永远不会发生冲突。
此外,您应该将所有(.*)
更改为([^/]*)
,因为(.*)
并非贪婪,并会吞噬其他路径。