apache重写冲突
我知道有些矛盾,但作为一个修改版的麻瓜,是时候寻求帮助了 我正在重新写作apache重写冲突,apache,mod-rewrite,Apache,Mod Rewrite,我知道有些矛盾,但作为一个修改版的麻瓜,是时候寻求帮助了 我正在重新写作 到 如果成功,请使用: (rule#1) RewriteRule ^(.*)\/$ script.php?id=$1&%{QUERY_STRING} [L] (rule#2) RewriteRule ^(.*)\/foobar/([0-9]+)$ script.php?id=$1&foobar=$2 [L] 接下来,我重写 到 同样成功的是,使用: (rule#1) RewriteRule ^(.*)\
到
如果成功,请使用:
(rule#1)
RewriteRule ^(.*)\/$ script.php?id=$1&%{QUERY_STRING} [L]
(rule#2)
RewriteRule ^(.*)\/foobar/([0-9]+)$ script.php?id=$1&foobar=$2 [L]
接下来,我重写到
同样成功的是,使用:
(rule#1)
RewriteRule ^(.*)\/$ script.php?id=$1&%{QUERY_STRING} [L]
(rule#2)
RewriteRule ^(.*)\/foobar/([0-9]+)$ script.php?id=$1&foobar=$2 [L]
但是,当我尝试包含查询字符串时,因此
可以重新写入
为此:
(rule#3)
RewriteRule ^(.*)\/foobar/([0-9]+)$ script.php?id=$1&foobar=$2&%{QUERY_STRING} [L]
然后阿帕奇就把我扔回了监狱
我从试错中知道,如果规则3没有使用与规则1相同的script.php,那么它将起作用,但我不知道如何修复它,所以任何帮助都表示感谢
嗯……在用秋波的例子仔细检查了我的规则之后,我终于发现了哪里出了问题。虽然不是完美的,但我的重写规则实际上是按预期工作的。然而,我完全忘记了我有另一个脚本来检查有效的参数。。。显然,有时抛出随机测试值不是一个好主意。不过谢谢你的^/技巧 警告:您使用的是
*
,它实际上无法匹配任何内容。使用+
,除非您打算不匹配任何内容
你所有的规则都列在这里了吗?您的错误日志中是否存在与此相关的错误?使用
[^/]+
仅匹配一个或多个任意字符,除了/
之外,而不是*
任意数量的任意字符:
RewriteRule ^([^/]+)/$ script.php?id=$1&%{QUERY_STRING} [L]
RewriteRule ^([^/]+)/foobar/([0-9]+)$ script.php?id=$1&foobar=$2 [L]
此外,您可以设置QSA标志,使原始请求的查询自动附加到新URL,而不是手动附加:
RewriteRule ^([^/]+)/$ script.php?id=$1 [L,QSA]