我想沿着这些线创建一个干净的网址 http://example.com/secretkey/username/apifunction/data_in/
并使用以下网址重写规则,它似乎工作正常
$('table').focusin(function (e) {
console.log("table got focus - scroller jumps up");
}).click(function () {
$('table').setActive();
});
因为我从网址重写测试程序获得以下输出确认。
RewriteRule ^/?([^-]+)/([^-]+)/([^-]+)/([^-]+)/?$ /api.php?Key=$1&user=$2&funct=$3&request=$4 [L,QSA]
然而它似乎摔倒了,而我正在努力理解的部分是如果我在URL的末尾添加额外的/ moredata /它就会崩溃。并且url重写测试程序显示我的url现在返回如下。
http://example.com/api.php?Key=secretkey&user=username&funct=apifunction&request=data_in
任何关于我出错的建议都会非常感激,并且我的重写中出现了任何突出的错误(这对我来说都是新的)。
答案 0 :(得分:1)
[^-]+
表示匹配,直到找到下一个-
或行结束。但在您的情况下,您实际上是在匹配由/
分隔的网址组件。
请尝试使用此代码:
RewriteEngine On
RewriteBase /apitest/
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ api.php?Key=$1&user=$2&funct=$3&request=$4 [L,QSA]
答案 1 :(得分:0)
造成这种行为的两个关键因素是:
([^-]+)
,表示:"匹配除-
字符以外的任何内容" 这意味着您的第一个分组([^-]+)
匹配路径元素和/
。如果你真的想要匹配除-
个字符以外的所有内容,那么除了结尾之外的所有内容中都包含/
:
RewriteRule ^/?([^-/]+)/([^-/]+)/([^-/]+)/([^-]+)/?$ /api.php?Key=$1&user=$2&funct=$3&request=$4 [L,QSA]