Apache Owncloud中CalDav和CardDav URL的Mod Rewirte

Apache Owncloud中CalDav和CardDav URL的Mod Rewirte,apache,.htaccess,mod-rewrite,dns,owncloud,Apache,.htaccess,Mod Rewrite,Dns,Owncloud,我想缩短我自己的Cloud caldav和carddav URL 当前URL为: 注意:爱迪生的名字和之后的名字是动态的,它会根据用户的不同而变化 我希望是这样 .htaccess文件包含 重新启动发动机 重写基/ 重写规则^index\.php$-[L] 重写条件%{REQUEST\u URI}!\。单点登录/ 重写cond%{REQUEST_FILENAME}-F 重写cond%{REQUEST_FILENAME}-D 重写规则/index.php[L] 例如: 如果用户请求。然后

我想缩短我自己的Cloud caldav和carddav URL

当前URL为:

注意:爱迪生的名字和之后的名字是动态的,它会根据用户的不同而变化

我希望是这样

.htaccess文件包含
重新启动发动机
重写基/
重写规则^index\.php$-[L]
重写条件%{REQUEST\u URI}!\。单点登录/
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/index.php[L]
例如:

如果用户请求。然后它应该重定向到


如何使用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的一部分(斜杠之间)不同,并且您不想(或不能)为每种情况编写规则,则使用正则表达式
([^/]+)
捕获动态部分,并使用重新捕获变量
$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这个名字不是静态的,它是动态的,它会根据用户的不同而不断变化的。在你的问题中加上“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]
RewriteRule ^caldav/principals/([^/]+)/$ owncloud/remote.php/caldav/principals/$1/ [L]