通过 htaccess 部署时 Trac 基本 URL 未被重写

通过 htaccess 部署时 Trac 基本 URL 未被重写

我如何说服 tractrac.cgi从其内部链接中省略?

我使用 htaccess 和 mod_rewrite 在用户目录中部署了一个 trac 实例,并希望 URL 采用以下形式http://example.com/foo/ticket/1。无法编辑服务器配置。

我的用户网络目录包含

$ ls -A foo
.htaccess trac.cgi

.htaccess 包含推荐的内容在 Trac 网站上

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ trac.cgi/$1 [L,QSA]

RewriteRule ^$ trac.cgi [L]

这部分成功了,因为我可以转到http://example.com/foo/ticket/1并获取正确的页面。但是,Trac 在其 Wiki 页面上生成的所有链接仍然包含“trac.cgi”。trac 生成的页面源包含如下链接

<a href="/foo/trac.cgi/wiki/WikiStart">

我尝试找出 trac 如何确定要使用的基本 URL,但没有成功。trac.ini使用

base_url = http://example.com/foo/
use_base_url_for_redirect = true

没有效果。

答案1

这似乎是一个未解决的 Trac 问题(Trac 票 2299),目前的解决方法是编辑trac.cgi并添加行

 os.environ['SCRIPT_NAME'] = "/foo"

这帮我解决了这个问题。

相关内容