Mod 在 Owncloud 中重新编写 CalDav 和 CardDav url

Mod Rewirte for CalDav and CardDav urls in Owncloud

我想缩短我的 owncloud caldav 和 carddav 网址。

当前网址为:

https://site.mysite.com/owncloud/remote.php/caldav/principals/edison/

https://site.mysite.com/owncloud/remote.php/carddav/addressbooks/edison/contacts

注意:名字 edison 和后面的名字是动态的,它会根据用户而改变。

我希望它是

https://site.mysite.com/caldav/principals/edison/

https://site.mysite.com/carddav/addressbooks/edison/contacts

.htaccess file contains 

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_URI} !\.sso/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

例如:

如果用户请求https://site.mysite.com/caldav/principals/edison/。然后它应该重定向到 https://site.mysite.com/owncloud/remote.php/caldav/principals/edison/

如何使用 mod_rewrite 完成?

mod_rewrite 使用动态部分

为请求的 URL 添加路径

从服务器根目录开始,在 RewriteRule "pattern" 参数中输入请求的 URL 路径,在 "substitution" 参数中输入所需的路径。形式为:

RewriteRule pattern substitution [flags]

在这种情况下:

RewriteRule ^caldav/principals/edison/$ owncloud/remote.php/caldav/principals/edison/ [L]

如果 URL 的一部分(斜杠之间)发生变化,并且您不想(或不能)为每种情况编写规则,则使用正则表达式 ([^/]+)捕获动态部分并使用 RE 捕获变量 </code>:</p> 将其注入到您的替换路径中 <pre><code>RewriteRule ^caldav/principals/([^/]+)/$ owncloud/remote.php/caldav/principals// [L]

第一组括号为</code>,第二组为<code>,以此类推。捕获括号可以嵌套。

将更具体的规则放在规则列表的较高位置,将更一般的规则放在列表的较低位置。所以我建议把这个规则放在第一位,就在 RewriteBase /.

之后