这个mod_rewrite语句出了什么问题?

时间:2010-02-02 22:33:50

标签: apache mod-rewrite

我需要复制mod_alias的功能,我不能直接使用它,因为我在共享主机上,而Alias语句在.htaccess中不起作用。

我想要实现的基本上是

Alias /manual /www/customer/some_other_dir/manual

我正在尝试mod_rewrite:

RewriteRule ^/manual/(.*) /www/customer/some_other_dir/manual/%1?%{QUERY_STRING} [L]

这永远不会匹配对www.example.com/manual的任何调用。

为什么不呢?我做错了什么?

2 个答案:

答案 0 :(得分:2)

尝试:

RewriteRule ^/manual(/(.*))?$ /www/customer/some_other_dir/$2 [L]

除了?上的kleene闭包之外,/.字符来说是可选的,以确保/manual/manual/和{{1}虽然我收集斜线通常是由apache预重写引擎添加的。

我的框中的快速测试显示此规则还传递了查询字符串:

/manual/a/b/c

答案 1 :(得分:1)

关闭多视图选项

Options -Multiviews

我认为,它会在请求的URL结束时显示/。

这样的内容也会匹配www.example.com/manual

RewriteRule ^/manual/?(.*) /www/customer/some_other_dir/manual/%1?%{QUERY_STRING} [L]