mod-redmine && mod-passenger:重写 uri 后,Passenger 拒绝加载(此处:Redmine)。RailsBaseURI 应该放在哪里?

mod-redmine && mod-passenger:重写 uri 后,Passenger 拒绝加载(此处:Redmine)。RailsBaseURI 应该放在哪里?

我有一个在职的/var/lib/redmine 上的 Redmine 实例。(Redmine 配置不是问题)

ln -s /var/lib/redmine/public /var/www/redmine
chown -R www-data:www-data /var/www/redmine
echo "RailsBaseURI /redmine" > /etc/apache2/sites-available/redmine
a2ensite redmine
service apache2 restart

通过以下方式测试http://here.comes.my.ip/redmine... 测试效果很好。

但是我对服务器名称到文件夹映射(重写)和乘客感到困惑。

这是我的默认虚拟主机(是的 - 由于 OneSSLCertPerIP,所有内容都在一个虚拟主机中)

<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www
RewriteEngine on

RewriteMap lowercase int:tolower
RewriteCond %{REQUEST_URI} !^/cgi-bin/

# map servername to folders
RewriteCond ${lowercase:%{SERVER_NAME}} ^[a-z0-9_-]+\.[a-z]+$
RewriteRule ^(.+) ${lowercase:%{SERVER_NAME}}$1 [C]
RewriteRule ^([a-z0-9_-]+)\.([a-z]+)/(.*) /var/www/$2/$1/default/$3 

RewriteCond ${lowercase:%{SERVER_NAME}} ^[.a-z0-9_-]+\.[a-z0-9_-]+\.[a-z]+$
RewriteRule ^(.+) ${lowercase:%{SERVER_NAME}}$1 [C]
RewriteRule ^([.a-z0-9_-]+)\.([a-z0-9_-]+)\.([a-z]+)/(.*) /var/www/$3/$2/v+$1/$4
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>
    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/access.log combined  
</VirtualHost>

这些 RewriteRules 将 example.de 映射到 /var/www/de/example/default,并将 sub.example.de 映射到 /var/www/de/example/v+sub

非常好(映射工作正常)但非常糟糕(通过乘客调用 redmine 不起作用):

ln -s /var/lib/redmine/public /var/www/de/example/v+redmine
chown -R www-data:www-data /var/www/de/example/v+redmine
[...]
service apache2 restart

[...] 可以通过多次尝试将 RailsBaseURI 与 /redmine 的不同文件夹放在 /etc/apache2/sites-available/default 中的不同位置来替换

结果http://redmine.example.de/- 只是目录列表而不是redmine。

附加信息:操作系统:Ubuntu-server Oneiric

答案1

好的,找到了一个解决方案,但它不是很动态:(

我补充道

<Directory /var/www/de/example/v+redmine>
    RailsBaseURI /de/example/v+redmine
    PassengerAppRoot /var/lib/redmine
    Options -MultiViews
</Directory>

mod_rewrite 导致乘客的执行路径有点混乱。PassengerAppRoot 将修复此问题。;)

PS:仅使用一种方式(uri)访问您的应用程序 - 否则链接将会混乱。

相关内容