`
boin
  • 浏览: 34717 次
社区版块
存档分类
最新评论

利用SVNListParentPath增加http浏览仓库根目录的功能

阅读更多
使用SVNParentPath的时候,直接访问ParentPath的时候,总是得到以下错误提示:

403 Forbidden
Forbidden

You don't have permission to access /svn/ on this server.

下面的办法可以搞定它:

一、首先,Subversion1.3及以后版本支持SVNListParentPath ON,之前的版本只能使用PHP自己做。

二、Location 设置中最后要加上/,应该是<Location /svn/>而不是<Location /svn>否则可能不能访问。

三、通过“http://localhost/svn/” 来访问仓库列表,如果想让“http://localhost/svn”也起作用的话,需要在</Location>的后面增加重定向的设置:RedirectMatch ^(/svn)$ $1/  ,当然也可以采用RewriteEngine之类的办法。

四、修改后的httpd.conf的对应部分如下:

<Location /svn/>
    DAV svn
    SVNListParentPath on
    SVNParentPath e:/svn
#    SSLRequireSSL                 #指定该目录只能通过SSL操作
#    SVNPathAuthz off

    AuthzSVNAccessFile e:/ca/access/file
  
    #try anonymous access first,resort to real
    #authentication if necessary.
    #Satisfy Any
    Require valid-user
  
    #how to authenticate a user
    AuthType Basic
    AuthName "服务器需要身份验证:"
#    AuthUserFile e:/ca/access/svn-auth-file

  AuthMySQLHost localhost
  AuthMySQLUser Bugfree
  AuthMySQLPassword mandarin
  AuthMySQLDB BugFree
  AuthMySQLUserTable BugUser
  AuthMySQLNameField UserName
  AuthMySQLPasswordField UserPassword
#  AuthMySQLMD5Passwords On
  AuthMySQLPwEncryption md5
 
</Location>

RedirectMatch ^(/svn)$ $1/

五、如果使用Subversion1.3以前的版本,或需要定制列表显示的话,可以自己写php脚本来控制仓库列表的显示,TotoiseSVN的帮助文件中有详细描述:

<html>
<head>
<title>Subversion Repositories</title>
</head>
<body>

<h2>Subversion Repositories</h2>
<p>
<?php
    $svnparentpath = "C:/svn";
    $svnparenturl = "/svn";

    $dh = opendir( $svnparentpath );
    if( $dh ) {
        while( $dir = readdir( $dh ) ) {
            $svndir = $svnparentpath . "/" . $dir;
            $svndbdir = $svndir . "/db";
            $svnfstypefile = $svndbdir . "/fs-type";
            if( is_dir( $svndir ) && is_dir( $svndbdir ) ) {
                echo "<a href=\"" . $svnparenturl . "/" .
                        $dir . "\">" . $dir . "</a>\n";
                if( file_exists( $svnfstypefile ) ) {
                    $handle = fopen ("$svnfstypefile", "r");
                    $buffer = fgets($handle, 4096);
                    fclose( $handle );
                    $buffer = chop( $buffer );
                    if( strcmp( $buffer, "fsfs" )==0 ) {
                        echo " (FSFS) <br />\n";
                    } else {
                        echo " (BDB) <br />\n";
                    }
                } else {
                    echo " (BDB) <br />\n";
                }
            }
        }
        closedir( $dh );
    }
?>
</p>

</body>
</html>

Save the lines above to a file svn_index.php and store that file in your web root folder. Next you have to tell Apache to show that page instead of the error:

    *

      Uncomment (remove the '#' char) from the following line in your Apache config file:

      #LoadModule rewrite_module modules/mod_rewrite.so

    *

      Add the following lines just below your <Location> block where you define your Subversion stuff:

          RewriteEngine on
          RewriteRule ^/svn$ /svn_index.php [PT]
          RewriteRule ^/svn/$ /svn_index.php [PT]
          RewriteRule ^/svn/index.html$ /svn_index.php [PT]

六、URL重写的若干非mod_rewrite方法

原文出处:http://www.chinaunix.net 作者:HonestQiao  发表于:2005-09-23 23:40:16

1、Alias:重写到本地路径
可以使用Alias把一个指定的Url重写到某一固定的本地路径
Alias /test/ /home/www/test/
那么对http://..../test/ 将对应了/home/www/test/
注意:Alias必须是一一对应的,/test/将不对/test起作用。

2、AliasMatch:重写到本地路径
与Alias类似,但是可以使用正则表达式
AliasMatch ^/test(.*) /home/www/test$1

3、Redirect :重写到网址
Redirect /test/ http://....../test2/

4、RedirectMatch :重写到网址
与Redirect类似,但是可以使用正则表达式
Redirect /test(.*) http://....../test2$1

在不需要很复杂的URL重写时,完全可以使用以上的几条指令来进行。
分享到:
评论

相关推荐

    SVN服务端安装和配置.doc

    其中,`SVNParentPath`指定了SVN仓库的根目录,`AuthUserFile`用于设置用户验证文件,`AuthzSVNAccessFile`则用于指定权限控制文件。 以上配置完成后,Apache将作为SVN服务器运行,提供版本控制服务。需要注意的是...

    svn 配置管理 TSVN操作手册

    在Apache的配置文件中,通过Location指令设定SVNParentPath,指定所有项目的根目录,同时设置认证类型、名称和用户信息文件。 例如,以下是一个基本的Apache配置段: ``` DAV svn SVNListParentPath on ...

    CentOS搭建SVN服务配合apache代理访问

    本篇文章主要介绍如何在 CentOS 系统上搭建 Subversion (SVN) 服务,并利用 Apache 作为代理实现 HTTP 协议访问 SVN 仓库。整个过程包括服务器端的配置与客户端的访问设置。此外,还会涉及到用户账户与权限管理等...

    SVN服务器环境搭建[参照].pdf

    配置路径和参数方面,`&lt;Location/svn/&gt;`定义了通过http://HOSTip/svn/访问SVN服务器,`DAV svn`启用SVN支持,`SVNListParentPath on`允许列出仓库目录。同时,需要确保URL访问路径为`/svn/`而非`/svn`,以防出现访问...

    svn-1.4.3-setup.exe.7z

    ,将文件 svnindex.xsl, svnindex.css 和 menucheckout.ico 放到你的文档根目录中(通常是 C:/Program Files/Apache Group/Apache2/htdocs)。 这个目录在 Apache 配置文件中用 DocumentRoot 指示设置。 你可以直接...

    SVN服务端Subversion与客户端TortoiseSVN教程--解决同步问题

    创建一个svn repository的根目录,例如D:/svn,然后输入命令svnadmin create repos创建仓库。 在Apache的http.conf文件中添加节点,并添加以下代码: DAV svn SVNListParentPath on SVNParentPath D:\svn\repos ...

    SVN服务器环境搭建收集.pdf

    例如,`&lt;Location /svn/&gt;`允许通过"http://HOSTip/svn/"访问SVN服务器,`DAV svn`启用WebDAV协议,`SVNListParentPath on`则允许列出所有仓库。 配置过程中,可能遇到的问题包括Apache服务无法启动。这可能是由于...

    win下部署SVN服务器.doc

    - `SVNParentPath`指定了SVN仓库的根目录位置。 - `AuthUserFile`指定了存储用户密码的文件路径。 - `AuthzSVNAccessFile`指定了权限控制文件的路径。 #### 三、SVN服务器的安装与配置 1. **下载与安装** - ...

    本人总结的SVN服务器的安装,绝对实用!

    `rw`表示读写权限,`/`代表仓库根目录,而`01tools:/`和`02yycx:/`是仓库内的特定目录。在`httpd.conf`中引用这个文件,替换`AuthzSVNAccessFile`行: ```ApacheConf AuthzSVNAccessFile accessfile.txt ``` 最后...

    ApacheSVN安装操作

    现在你可以通过SVN客户端(如TortoiseSVN)的Repo-browser功能,输入http://localhost/svn/foo2来访问新创建的仓库。首次访问会提示你输入在步骤四中设置的用户名和密码。如果已有局域网内的SVN代码库,可以直接导入...

    Subversion Server(1.4.3)安装步骤

    - `SVNListParentPath on`:对于 Subversion 1.3 及更高版本,启用列出 SVNParentPath 下所有可用仓库的功能。 - `SVNParentPath E:\SVN`:指定 Subversion 需要查看的版本库位于 `E:\SVN` 目录下。 - `...

    windows下Apache+SVN+Trac安装及配置(一)

    ### Windows 下 Apache+SVN+Trac 安装与配置详解 ...接下来的章节中,我们将继续介绍如何集成 Trac,以及如何利用 Trac 进行更高级的功能设置,例如问题追踪、文档管理等,以便为团队提供一个完整的协作开发环境。

    基于apached的svn安装(Windows Based)

    3. **创建SVN仓库**: 使用命令行工具(如Git Bash或CMD),进入Apache的`htdocs`目录,使用以下命令创建新的SVN仓库: ``` svnadmin create repository_name ``` 其中`repository_name`是你的仓库名称。 4. *...

    Centos 7 下安装配置SVN服务器操作文档

    至此,已经完成了CentOS 7下SVN服务器的安装与配置,并实现了通过HTTP协议访问SVN仓库的功能。通过这种方式,可以方便地管理和使用版本控制系统,支持多用户和多仓库的管理需求,提高了开发团队的工作效率。

    Linuxe 配置SVN

    在服务器上创建SVN仓库目录,并初始化仓库: - 执行`mkdir -p /svn/repository/` - 初始化仓库:`svnadmin create /svn/repository/SelfServDev` 3. **设置账号密码** 创建账号密码文件以实现用户的认证授权:...

    linux下subverion服务器搭建

    安装完成后,创建SVN仓库目录,例如在 `/var/svn` 下: ```bash sudo mkdir /var/svn sudo svnadmin create /var/svn/myrepo ``` 这里,`myrepo` 是你仓库的名称,你可以根据实际需求进行更改。 然后,配置Apache...

    SVN+apache

    - `SVNParentPath`: SVN版本库的根目录位置。 - `SVNListParentPath on`: 允许列出所有版本库。 - `#SSLRequireSSL`: 如果需要强制HTTPS访问,请去掉前面的`#`。 - `Require valid-user`: 要求有效用户身份验证。 *...

Global site tag (gtag.js) - Google Analytics