Apache 重写不符合';行不通
我有以下动态URL: 其中我重写了 与:Apache 重写不符合';行不通,apache,mod-rewrite,Apache,Mod Rewrite,我有以下动态URL: 其中我重写了 与: RewriteRule^dev/cserv/([^/\.]+)/([^/\.]+)/([^/\.]+)/(.*)/?$/dev/cserv/index.php?a=$1&car=$2&year=$3&engine=$4[L] 现在,当我想在末尾添加另一个字段时,为什么这个重写规则不起作用: RewriteRule ^dev/cserv/([^/\.]+)/([^/\.]+)/([^/\.]+)/([^/\.]+)/(.*)/?$ /dev/cserv/i
RewriteRule^dev/cserv/([^/\.]+)/([^/\.]+)/([^/\.]+)/(.*)/?$/dev/cserv/index.php?a=$1&car=$2&year=$3&engine=$4[L]
现在,当我想在末尾添加另一个字段时,为什么这个重写规则不起作用:
RewriteRule ^dev/cserv/([^/\.]+)/([^/\.]+)/([^/\.]+)/([^/\.]+)/(.*)/?$ /dev/cserv/index.php?a=$1&car=$2&year=$3&engine=$4&service=$5 [L]
这是因为([^/\.]+)
匹配1.8-HDi
中的“.”作为其中一个片段的结尾。规则应当是:
RewriteRule ^dev/cserv/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([0-9]+)/?$ /dev/cserv/index.php?a=$1&car=$2&year=$3&engine=$4&service=$5 [L]
经过测试它到底是如何工作的?它匹配吗?我想是的,因为我无法打印出服务变量?我试图激活重写日志,但它都是空的..?最后一个字段是数字,顺便说一句。它不起作用的原因是正确的。。。给我一分钟,我会尝试修改:DIt在我的本地机器上工作。。。在我链接的网站上。
([^/]+)
匹配所有内容,最多匹配/
(4次),而([0-9]+)
匹配末尾的所有数字(尽管如果愿意,您可以使用([^/]+)
)<代码>/?将处理末尾的斜杠。没错。。。我不知道你的机器出了什么问题:(嗯……如果我关掉一些其他的重写,它会突然工作起来。)-/啊,你有其他的重写,一般来说,把重写规则从最具体到一般,否则它们会相互干扰。很高兴你弄明白了。(另外,由于您有多个这样的规则,请尽量避免以(.*)