Regex RewriteRule正则表达式问题-如何修复`/api`return index.php?url=api
当前的Regex RewriteRule正则表达式问题-如何修复`/api`return index.php?url=api,regex,apache,mod-rewrite,Regex,Apache,Mod Rewrite,当前的重写规则在/api上失败(必须返回index.php?url=api) 有效期: /api返回index.php?api&url=[空] /api/user return index.php?api&url=user 失败: /api返回index.php?api&url=s,但必须返回index.php?url=api 更新:如果/api之后的任何字符不以斜杠开头,则必须返回index.php?url=[任何字符]-/apirf8ty76必须返回index.php?url=api
重写规则在/api
上失败(必须返回index.php?url=api)
有效期:
- /api返回index.php?api&url=
[空]
- /api/user return index.php?api&url=user
失败:
- /api返回index.php?api&url=s,但必须返回index.php?url=api
更新:如果/api
之后的任何字符不以斜杠开头,则必须返回index.php?url=[任何字符]
-/apirf8ty76必须返回index.php?url=apirf8ty76
/api仍然必须返回index.php?api&url=[empty]
和/api/user return index.php?api&url=user在第一个正则表达式中使用负前瞻,如下所示:
RewriteRule ^api(?!s)\/?([^\/]*)$ index.php?api&url=$1
这应该可以满足您的要求。将您的条件更改为此,以使其正常工作:
RewriteRule ^api(?:/([^/]*))?$ index.php?api&url=$1 [QSA,L,NC]
RewriteRule ^([^.]*)$ index.php?url=$1 [QSA,L]
对不起,我的问题不够清楚,我只是更新了一下。您的正则表达式在/api
中工作正常,但在/api
下一个字符将是除斜杠/
以外的其他字符时,将无法解决此问题。
RewriteRule ^api(?:/([^/]*))?$ index.php?api&url=$1 [QSA,L,NC]
RewriteRule ^([^.]*)$ index.php?url=$1 [QSA,L]