Apache 的重定向和重写规则

肖恩 M。

我正在尝试在我的 apache 网络服务器上安装 CalDAV 客户端,但在使用重定向和重写规则的组合来获取所需的 url 时遇到了问题。

我的网络服务器的文档根目录是/var/www,日历文件存储在/var/www/agendav/web/public. 如果我通过我的浏览器进入<website>/agendav/web/public/index.php,我可以毫无困难地进入界面并使用它,所以这不是问题。但是,我想要的日历 URL 是<website>/calendar/,而不必向下遍历议程文件夹树。我一直在尝试使用重定向规则和重写规则来执行此操作,但收效甚微。我在这里找到了一些其他答案,这些答案让我很接近,例如this onethis one,具有有效的重定向,但我仍然遇到重写规则的问题。这是我目前的解决方案:

# Rules for the Calendar
Redirect "/calendar" "/agendav/web/public"
RewriteEngine On
RewriteCond %{REQUEST_URI} "^/agendav"
RewriteRule "^/agendav/web/public/(.*?)$" "/calendar/$1"

我目前的解决方案似乎有点循环。首先,我将用户重定向到agendav 文件夹,然后尝试将重定向隐藏在重写规则之后,当似乎我可以摆脱单个重写规则时。不幸的是,我工作的团队规模不够大,无法拥有自己的专用服务器管理员,尽管对此知之甚少,但我最终还是完成了这份工作。任何帮助获得这一点将不胜感激。

阿尔贝托·马丁内斯

你不需要重定向,你可以只用一个重写规则来完成,问题是你有条件并且规则颠倒了,你使用了条件的真实路径而不是“虚拟”路径:

RewriteEngine on
RewriteCond %{REQUEST_URI} "^/calendar" [NC]
RewriteRule "^calendar/(.*)" "/agendav/web/public/$1"

根据此规则,所有请求http://yourwebsite/calendar/*都在内部使用http://yourwebsite/agendav/web/public/*.

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章