我如何说服 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"
这帮我解决了这个问题。