我有一个在职的/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)访问您的应用程序 - 否则链接将会混乱。