2015-03-09 2 views
2

Я хочу сократить свои собственные caldav и carddav URL-адреса.Mod Rewirte для CalDav и CardDav URL-адресов в Owncloud

в настоящее время URLs являются:

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?

ответ

1

mod_rewrite Prepend Путь к запрашиваемой URL с динамической Порцией

начиная с корневым сервером, введите требуемый URL-путь в параметре RewriteRule «шаблон», и нужный путь в параметре «замещение». В виде:

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] 

Первый набор р arenthesis $1, второй набор $2 и т. д. И захват скобок может быть вложен.

Поместите более конкретные правила выше в список правил и более общие правила ниже в списке. Поэтому я предлагаю сначала поставить это правило сразу после RewriteBase /.

+0

не работает .... –

+0

RewriteRule^caldav/principals/edison/$ owncloud/remote.php/caldav/principals/edison/[L] - название edison не является статическим, его динамика продолжает изменяться в соответствии с Пользователь. –

+0

Добавьте тот факт, что «edison» не является статичным для вашего вопроса. – bloodyKnuckles

Смежные вопросы