2017-09-21 64 views
0

我在尝试将所有调用路由到一个目录到该目录中的一个脚本时遇到了mod_rewrite问题。这个简单的规则是工作在Linux上:Mod重写在Mac OSX中Sierra

重写规则* api.cgi

在错误日志中对这个操作系统,为了这个,我得到“重写规则:不能编译正则表达式‘*’”。

我已经尝试了一些其他的事情,并且mod rewrite正在处理一些匹配,但只对文件名而不是目录路径。

例如, RewriteRule。* api.cgi - 将任何带有文件名的文件路由到api.cgi,这证明它正在工作,但是我想将/ api/config /路由到api.cgi。我似乎只能得到/api/config/something.something实际上强制重写 - 即它需要一个文件名。

任何想法?我从字面上想要把这个目录中的所有东西都路由到api.cgi,不管它有多少深度或是否在文件结尾处有一个文件名。

谢谢, 马特

回答

0

您可以使用:

RewriteRule^api.cgi 

但通常的结果是完全与

RewriteRule .* api.cgi 

相同的,如果你做了很多测试,它是可能的这是一个缓存问题。尝试清除缓存或使用其他浏览器。

+0

谢谢,但仍然是相同的问题。 RewriteRule^api.cgi和RewriteRule。* api.cgi都会使用a重定向任何东西。在其中,但不是如果它只是一个文件路径。所以/api/config.html会重定向/ api/config。会重定向,但/ api/config不会。给出的错误信息是标准404 在此服务器上未找到请求的URL /〜用户名/ cgi-bin/api2/config。 很显然,url不存在,但它应该重定向而不是404。 –

+0

不,在正则表达式中。*:星号表示前面元素的零次或多次出现。和'.'匹配任何单个字符。 https://en.wikipedia.org/wiki/Regular_expression – Croises

+0

我认为问题出在你的cgi上 – Croises