【问题标题】:Mod Rewirte for CalDav and CardDav urls in OwncloudMod Rewirte 用于 Owncloud 中的 CalDav 和 CardDav url
【发布时间】:2015-05-10 23:42:20
【问题描述】:

我想缩短我自己的cloud caldav 和carddav url。

目前的网址是:

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

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

注意:爱迪生这个名字和之后的名字是动态的,它会根据用户而改变。

我希望它是

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 来完成?

【问题讨论】:

    标签: apache .htaccess mod-rewrite dns owncloud


    【解决方案1】:

    mod_rewrite 使用动态部分将路径添加到请求的 URL

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

    RewriteRule pattern substitution [flags]
    

    在这种情况下:

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

    如果 URL 的一部分(斜杠之间)发生变化,并且您不想(或不能)为每种情况编写规则,则使用正则表达式 ([^/]+) 捕获动态部分并将其注入您使用 RE 捕获变量 $1 的替换路径:

    RewriteRule ^caldav/principals/([^/]+)/$ owncloud/remote.php/caldav/principals/$1/ [L]
    

    第一组括号是$1,第二组是$2,以此类推。捕获括号可以嵌套。

    将更具体的规则放在规则列表的较高位置,将更通用的规则放在列表的较低位置。所以我建议把这条规则放在第一位,紧跟在RewriteBase /之后。

    【讨论】:

    • RewriteRule ^caldav/principals/edison/$ owncloud/remote.php/caldav/principals/edison/ [L] - 爱迪生这个名字不是静态的,它是动态的,它会根据用户不断变化。
    • 在您的问题中添加“edison”不是静态的事实。
    • 不,我没有收到错误。我只想将 owncloud/remote.php 添加到 url。如果 url 包含 /caldav/ 或 /carddav/
    • 谢谢。我使用 (.*) 来获取 url 的剩余部分,因为剩余部分仍然更加动态。这是我使用的: RewriteRule ^caldav/(.*)$ site.mysite.com/owncloud/remote.php/caldav/$1 [L] 和 RewriteRule ^carddav/(.*)$ site.mysite.com/owncloud /remote.php/carddav/$1 [L]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多