【问题标题】:Mod Rewrite in Mac OSX SierraMacos Sierra 中的 Mod_rewrite
【发布时间】:2017-09-21 11:01:36
【问题描述】:

在尝试将所有对一个目录的调用路由到该目录中的一个脚本时,我遇到了 mod_rewrite 问题。这个简单的规则适用于 linux:

重写规则 * api.cgi

在此操作系统的错误日志中,为此我得到“RewriteRule:无法编译正则表达式'*'”。

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

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

有什么想法吗?我真的想把这个目录中调用的所有东西都路由到 api.cgi,不管有多少目录深或者它的末尾是否有文件名。

谢谢, 马特

【问题讨论】:

    标签: macos apache .htaccess mod-rewrite


    【解决方案1】:

    你可以使用:

    RewriteRule ^ api.cgi
    

    但通常结果与

    完全一样
    RewriteRule .* api.cgi
    

    如果你做了很多测试,有可能是缓存问题。尝试清除缓存或使用其他浏览器。

    【讨论】:

    • 谢谢,但还是同样的问题。 RewriteRule ^ api.cgi 和 RewriteRule .* api.cgi 都会重定向任何带有 .在其中,但如果它只是一个文件路径,则不是。所以/api/config.html 将重定向,/api/config。将重定向,但 /api/config 不会。给出的错误消息是标准的 404 在此服务器上找不到请求的 URL /~username/cgi-bin/api2/config。显然 url 不存在,但它应该重定向而不是 404。
    • 否,在正则表达式.*中:星号表示前面的元素出现零次或多次。而. 匹配任何单个字符。 en.wikipedia.org/wiki/Regular_expression
    • 我认为问题出在你的 cgi 上
    猜你喜欢
    • 2017-03-31
    • 2017-06-28
    • 2019-02-23
    • 1970-01-01
    • 1970-01-01
    • 2017-02-10
    • 1970-01-01
    • 2017-02-24
    • 2017-03-12
    相关资源
    最近更新 更多