RewriteRule正则表达式问题 - 如何修复`/ apis`返回index.php?url = apis

时间:2012-09-20 09:02:29

标签: regex apache mod-rewrite

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

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

有效:

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

失败:

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

应该做你想做的事。

答案 1 :(得分:1)

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

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

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