Как мне убедить trac пропустить trac.cgi
по его внутренним ссылкам?
У меня есть экземпляр trac, развернутый в каталоге пользователя с использованием htaccess и mod_rewrite, и я хотел бы, чтобы 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. В исходной трассировке страницы есть ссылки вроде
<a href="/foo/trac.cgi/wiki/WikiStart">
Я попытался выяснить, как trac определяет используемый базовый URL, но безуспешно. Редактирование trac.ini
с участием
base_url = http://example.com/foo/
use_base_url_for_redirect = true
не повлияло.
Похоже, это открытая проблема Trac (Билет на поезд 2299), и сейчас можно обойтись без редактирования trac.cgi
и добавьте строку
os.environ['SCRIPT_NAME'] = "/foo"
Это исправило это для меня.