Назад | Перейти на главную страницу

Базовый URL-адрес отслеживания не перезаписывается при развертывании через htaccess

Как мне убедить 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"

Это исправило это для меня.