Regex Apache重写规则匹配^abc/?(*),因此缺少^abc/?(*)$
对于这样的站点,我有一组通过编程生成的规则:Regex Apache重写规则匹配^abc/?(*),因此缺少^abc/?(*)$,regex,apache,.htaccess,mod-rewrite,Regex,Apache,.htaccess,Mod Rewrite,对于这样的站点,我有一组通过编程生成的规则: RewriteEngine on RewriteRule ^abc/?(.*)$ /$1?organisation=abc [QSA,L] RewriteRule ^fghij/?(.*)$ /$1?organisation=fghij [QSA,L] RewriteRule ^fghijklmn/?(.*)$ /$1?organisation=fghijklmn [QSA,L] 这样我们的客户就可以在他们的域上为他们自己的不同客户建立多个迷你站点
RewriteEngine on
RewriteRule ^abc/?(.*)$ /$1?organisation=abc [QSA,L]
RewriteRule ^fghij/?(.*)$ /$1?organisation=fghij [QSA,L]
RewriteRule ^fghijklmn/?(.*)$ /$1?organisation=fghijklmn [QSA,L]
这样我们的客户就可以在他们的域上为他们自己的不同客户建立多个迷你站点。
因为url可能以/或/blah.php结尾,所以我创建了如上所述的规则,但这意味着重写引擎将在^fghij/?(..$)之后停止,并且永远找不到^fghijklmn/?(。)$
我怎样才能改写我的规则,使每个组织都能正确匹配?
事先非常感谢您的正则表达式似乎有问题,因为
^fghij/?(.*)$
也会匹配fghijklmn
请尝试以下代码:
RewriteEngine on
RewriteRule ^abc(/.*)?$ $1?organisation=abc [QSA,L]
RewriteRule ^fghij(/.*)?$ $1?organisation=fghij [QSA,L]
RewriteRule ^fghijklmn(/.*)?$ $1?organisation=fghijklmn [QSA,L]
我想那是什么?在^abc/?(.*)中,$表示可选匹配/然后匹配后面的任何内容,因此您可能需要类似的内容
RewriteRule ^abc//?(.*)$ /$1?organisation=abc [QSA,L]
这将在末尾强制使用/,因为您说URL将始终以/或/blah.php结尾
此外,我不确定为什么您不在第一个斜杠之前在单词上尝试将组织与非贪婪匹配器匹配,然后将其附加到查询字符串中,而不是手动创建它。Oh抱歉,有一种情况下,url可能不会以斜杠结尾-www.blah.com/abc,这就是为什么我有可选的/匹配,这是我搞砸了的原因。根据我上面的评论,这也可以工作吗?有一种情况,url可能不会以斜杠结尾-www.blah.com/abc,这就是为什么我有可选的/match,这意味着你没有足够注意我的正则表达式。(/.*)? 使尾部斜杠和斜杠后面的任何内容都是可选的。自己测试一下。太棒了:)谢谢!