Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Apache重写规则匹配^abc/?(*),因此缺少^abc/?(*)$_Regex_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

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,这意味着你没有足够注意我的正则表达式。(/.*)? 使尾部斜杠和斜杠后面的任何内容都是可选的。自己测试一下。太棒了:)谢谢!