【问题标题】:Apache Baikal server RewriteRule for CardDAV short URLApache Baikal 服务器 RewriteRule for CardDAV 短 URL
【发布时间】:2016-05-06 17:50:34
【问题描述】:

我正在使用 Baikal CalDAV 和 CardDAV 服务器来保持我的联系人和日历同步。它适用于我所有的客户。对于 iPhone 和 Mac 支持,我什至将 /.well-known/ 重定向规则放在我的 Apache vHost 文件中。

Contacts Sync 正在以下 URL 上运行:

myurl/html/card.php/principals/(username)

我想为其他用户缩短此 URL。我以为我可以在 Apache 上使用 mod_rewrite 来做到这一点,但我无法让它工作。

我想重写

myurl/(username)

myurl/html/card.php/principals/(username)

它看起来很简单,但我大多以递归重定向结束。我使用了以下重写规则

RewriteRule ^(.*) /html/card.php/principals/$1

任何帮助将不胜感激。

【问题讨论】:

    标签: apache mod-rewrite


    【解决方案1】:

    是的,这是一个重写循环错误。

    (.*) 匹配任何 uri,包括目标 uri,并将其重写回自身,从而导致无限循环错误。

    为了避免这个错误,我们需要排除我们正在重写的路径。

    RewriteCond %{REQUEST_URI} !^/html/card.php/principal/
    RewriteRule (.*) /html/card.php/principal/$1
    

    现在规则是有条件的,它会将 /foo 重写为 /html/card.php/principal/foo 它不会重写 /html/card .php/principal/foo/html/card.php/principal/foo

    【讨论】:

    • 成功了!非常感谢您的帮助。我阅读了很多关于 RewriteRule 的文档,但错过了 RewriteCond 的用法。真的很感激。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多