用于CardDAV短网址的Apache Baikal服务器RewriteRule

时间:2016-05-06 17:50:34

标签: apache mod-rewrite

我使用Baikal CalDAV和CardDAV服务器让我的联系人和日历保持同步。它与我的所有客户都很好用。对于iPhone和Mac支持者,我甚至在我的Apache vHost文件中添加了/.well-known/重定向规则。

联系人同步适用于以下网址:

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

我想让其他用户缩短此网址。我以为我可以用Apache上的mod_rewrite来做,但是我无法使它工作。

我想重写

myurl/(username)

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

看起来非常简单,但我最终得到的是递归重定向。我使用了以下重写规则

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

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分: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