0

我通过互联网搜索,但没有找到匹配的问题或帖子。我花了几个晚上试图让它发挥作用,但没有成功。如果有人可以提供帮助并提供指导以使此高级 mod_rewrite 正常工作,我将不胜感激。(您可能想直接跳到下面的问题。)

环境: 我已经在 Apache 2.x 上安装了 websvn 最新版本,它具有 MultiView 功能,它可以在没有任何重写规则的帮助下生成以下格式的 URL:

https://svnweb.hostname.com/wsvn/Group.Repname/path/to/files/and/folders/in/svn/

这里的“组”不过是 SVNParentPath,而“Repname”是实际的 SVN 存储库。请注意“。” 在 Group 和 Repname 之间。

我配置了 SVN 1.7 + Apache 2,下面是 URL 格式:

https://svn.hostname.com/Group/Repname/path/to/files/and/folders/in/svn/

该问题与此 SVN URL 无关。为了限制和管理用户对 SVN 存储库的访问,我为每个 Repname 配置了 LDAP 身份验证和基于 LDAP 组的访问。此配置是在我创建的脚本的帮助下自动完成的。

要求/问题: 我想在 WEBSVN 使用 MultiView apache 功能构建其 url 的 URL 中将/wsn/Group.Repname/转换为/Group/Repname/ 。

如果您仔细观察,“Group”和“Repname”不是 WEBSVN URL 中的单独文件夹,并且与存储库的 SVN URL 路径不匹配。我想对 svnweb.hostname.com 的每个 Repname 使用相同的 svn.hostname.com LDAP 身份验证和基于 LDAP 组的权限。要使其正常工作,svnweb URL 必须与 SVN 服务器 URL 匹配,例如

这: https://svnweb.hostname.com/ Group/Repname /path/to/files/and/folders/in/svn/

而不是 https://svnweb.hostname.com/wsvn/Group.Repname / path/to/files/and/folders/in/svn/

可能的解决方案和限制: 要实现/解决此问题,我不想修改 Web 应用程序或创建新的 apache LDAP 身份验证和支持路径中的“Group.Repname”的 LDAP 组配置。想象一下超过 500 多个 SVN 存储库和维护开销。我认为 mod_rewrite 可以帮助我为我实现重写的 URL 并保护 WEBSVN,确保人们可以访问他们应该访问的内容。

我尝试了几个重写选项,但我无法将/wsn/Group.Repname/转换为/Group/Repname/。如果您知道如何使用重写来实现这一点,请告诉我。感谢您的阅读,感谢您的意见和建议。

4

2 回答 2

0

尝试以下操作:

RewriteEngine On
RewriteBase /
RewriteRule ^wsvn/([^./]+)\.(.+)$ https://svnweb.hostname.com/$1/$2 [L,NC]

[^./]+意思是“多于一个符号,但不是点或斜线”,.+意思是“多于一个符号”。如果重定向应该是永久性的,您可能需要在R=301之后添加。NC

于 2012-05-31T16:11:50.057 回答
0

试试这个规则?

RewriteEngine On
RewriteBase /
RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteRule ^wsvn(\.php)?/(.*?)\.(.*) $2/$3 [L,NC,QSA]

您是否也想更改域?从你的问题中我不明白这一点。

** 编辑 **:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/wsvn
RewriteRule ^(.*)/(.*)$ wsvn.php/$1.$2 [L]
于 2012-05-31T21:18:53.177 回答