针对CardDAV短URL的Apache贝加尔服务器重写规则
我正在使用贝加尔CalDAV和CardDAV服务器来同步我的联系人和日历。我所有的客户都很满意。对于iPhone和Mac suppoer,我甚至在我的Apache vHost文件中加入了针对CardDAV短URL的Apache贝加尔服务器重写规则,apache,mod-rewrite,Apache,Mod Rewrite,我正在使用贝加尔CalDAV和CardDAV服务器来同步我的联系人和日历。我所有的客户都很满意。对于iPhone和Mac suppoer,我甚至在我的Apache vHost文件中加入了/.众所周知的/重定向规则 联系人同步正在以下URL上工作: myurl/html/card.php/principals/(username) 我想为其他用户缩短此URL。我想我可以在Apache上使用mod_rewrite来完成它,但我无法让它工作 我想重写 myurl/(username) 到 它看起来
/.众所周知的/
重定向规则
联系人同步正在以下URL上工作:
myurl/html/card.php/principals/(username)
我想为其他用户缩短此URL。我想我可以在Apache上使用mod_rewrite
来完成它,但我无法让它工作
我想重写
myurl/(username)
到
它看起来非常简单,但我最终大多使用递归重定向。我使用了下面的重写规则
RewriteRule ^(.*) /html/card.php/principals/$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的用法。非常感谢。
RewriteCond %{REQUEST_URI} !^/html/card.php/principal/
RewriteRule (.*) /html/card.php/principal/$1