mod_rewrite:根据正则表达式查找文件

时间:2011-04-23 17:58:05

标签: regex apache mod-rewrite apache2

如果我可以根据从URI确定的模式找到文件,我想使用mod_rewrite重定向到页面

要匹配的文件的路径

/path/to/dir/cat1_cat2_cat3

HTTP请求

http://example.com/cat1/cat2/cat3

mod_rewrite配置:
第-1行:用正则表达式提取cat1,cat2和cat3 第二行:尝试使用正则表达式变量来匹配文件
第3行:如果匹配成功重定向到页面

RewriteCond %{QUERY_STRING} ^/(.*)/(.*)/(.*)$
RewriteCond /path/to/dir/$1_$2_$3 -f
RewriteRule /some_page.html

由于某种原因,它不起作用。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

试试这个:

RewriteCond /path/to/dir/$1_$2_$3 -f
RewriteRule ^/(.*)/(.*)/(.*)$ /some_page.html

RewriteCond看到mod_rewrite匹配后,评估了RewriteRule行,因此您可以在那里使用$N值。

您的原始版本也可以使用,除了:您在QUERY_STRING中与?匹配,这是请求中REQUEST_URI之后的部分 - 您可能意味着%N;您应该使用RewriteCond来引用上一个RewriteRule;而你错过了{{1}}的模式部分。