1

当前RewriteRule失败/apis(必须返回 index.php?url=apis)

RewriteRule ^api\/?([^\/]*)$ index.php?api&url=$1 [QSA,L]
RewriteRule ^([^.]*)$ index.php?url=$1 [QSA,L]

有效的:

  • /api 返回 index.php?api&url=[empty]
  • /api/user 返回 index.php?api&url=user

失败的:

  • /apis 返回 index.php?api&url=s,但必须返回 index.php?url=apis

更新: if之后的任何字符/api不以斜杠开头/必须返回 index.php?url= [any character]- /apirf8ty76 必须返回 index.php?url=apirf8ty76

/api 仍然必须返回 index.php?api&url=[empty]和 /api/user 返回 index.php?api&url=user

4

2 回答 2

1

在您的第一个正则表达式中使用负前瞻,如下所示:

RewriteRule ^api(?!s)\/?([^\/]*)$ index.php?api&url=$1

那应该做你想做的事。

于 2012-09-20T09:13:42.250 回答
1

将您的条件更改为此以使其正常工作:

RewriteRule ^api(?:/([^/]*))?$ index.php?api&url=$1 [QSA,L,NC]

RewriteRule ^([^.]*)$ index.php?url=$1 [QSA,L]
于 2012-09-20T12:27:19.787 回答