关于apache rewrite,再请教一下。

关于apache rewrite,再请教一下。

请教一下熟悉apache rewrite的朋友。

偶想实现这样一个功能:

本来偶默认设置所有“/abc/*”文件都重定向到“/123/*”。

现在的问题是,“/abc/1.php”这个文件比较特殊,需要先检查,如果这个文件存在,则不重定向,而直接打开,反之,如果不存在这个文件,则重定向到“/123/*”去。

需要怎么设置Rule呢~~~

先谢谢啦。
http://w.yi.org/ftp/FAPM/apache/ ... te.html#rewritecond
thanks for HQ~

I try first.
HQ兄,可否再请教一下。

我当前这么设置的:
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^abc/(.+)$ /123/$1 [L]

这样可以解决我之前提的问题了,谢谢你先。

然后,假设还有一个文件:

“/xyz/2.html”,我想让它转到“/456/3.php”去。

如果在规则集下面直接写:
RewriteRule ^xyz/(.+)$ /456/$1 [L]

这样的话,mod_rewrite不会检查2.html先,于是,我需要再在前面加一个:
RewriteCond %{SCRIPT_FILENAME} !-f

我觉得这样是不是浪费资源咯?同样的检测多次执行,似乎没必要,然后我就想,是否可以让多个Rule共享一个Cond呢?

盼指教。。。
call HQ。。。

looked?


QUOTE:
原帖由 iamcm 于 2007-3-27 16:24 发表
call HQ。。。

靠 HQ ?
http://w.yi.org/ftp/FAPM/apache/ ... te.html#rewritecond

'chain|C' (与下一个规则相链接 chained)
此标记使当前规则与下一个(其本身又可以与其后继规则相链接的, 并可以如此反复的)规则相链接。 它产生这样一个效果: 如果一个规则被匹配,通常会继续处理其后继规则, 即,这个标记不起作用;如果规则不能被匹配, 则其后继的链接的规则会被忽略。比如,在执行一个外部重定向时, 对一个目录级规则集,你可能需要删除``.www'' (此处不应该出现``.www''的)。
HQ兄,貌似不对吧。

我改成:

RewriteCond %{SCRIPT_FILENAME} !-f

RewriteRule ^abc/(.+)$ /123/$1 [L,C]

RewriteRule ^xyz/(.+)$ /456/$1 [L]

这样子了。现在是,匹配完第1条规则之后,第2条规则已经不起作用了。。。(被C忽略了?)

这不是偶想要的效果呀。
L表是最后一条规则。
汗。。。“表是”的意识是“不是”还是“表示”??别让俺打哑谜啊。。。