我通过互联网搜索但发现没有匹配的问题或帖子。我花了很多时间试图让它上班失败。我真的很感激,如果有人可以提供帮助,并指出让这个高级mod_rewrite工作。 (您可能希望直接跳到下面的问题。)
环境: 我在Apache 2.x上安装了带有MultiView功能的websvn最新版本,该功能可以生成以下格式的URL而无需任何重写规则:
https://svnweb.hostname.com/wsvn/Group.Repname/path/to/files/and/folders/in/svn/
这里的“Group”只是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 auth和基于LDAP组的访问权限。这个配置是在我创建的脚本的帮助下自动完成的。
要求/问题: 我希望在URL中将 /wsn/Group.Repname / 转换为 / Group / Repname / ,其中WEBSVN正在使用MultiView apache功能构建其URL。
如果仔细观察,“Group”和“Repname”不是WEBSVN URL中的单独文件夹,与存储库的SVN URL路径不匹配。我想使用相同的svn.hostname.com LDAP auth和基于LDAP组的权限,用于svnweb.hostname.com的每个Repname。为了使其工作,svnweb URL必须与SVN服务器URL匹配,如
此: https://svnweb.hostname.com/的组/ Repname /路径/到/文件/和/文件夹/中/ SVN /
而不是 https://svnweb.hostname.com/的 WSVN / Group.Repname /路径/到/文件/和/文件夹/中/ SVN /
可能的解决方案和限制: 要实现/解决此问题,我不想修改Web应用程序或在路径中创建支持“Group.Repname”的新apache LDAP auth和LDAP组配置。想象一下超过500多个SVN存储库和维护开销。我认为mod_rewrite可以帮助我实现重写的URL并保护WEBSVN,确保人们可以访问他们应该访问的内容。
我尝试了几个重写选项,但我无法将 /wsn/Group.Repname / 转换为 / Group / Repname / 。如果您知道如何使用重写可以实现这一点,请告诉我。感谢您的阅读,感谢您的意见和建议。
答案 0 :(得分:0)
尝试以下方法:
RewriteEngine On
RewriteBase /
RewriteRule ^wsvn/([^./]+)\.(.+)$ https://svnweb.hostname.com/$1/$2 [L,NC]
[^./]+
表示“多于一个符号,但不是一个点或斜线”,.+
表示“多个符号”。如果重定向应该是永久性的,您可能希望在R=301
之后添加NC
。
答案 1 :(得分: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]