如何配置Apache2将Redmine旧虚拟目录永久重定向至根域名?
解决Redmine URL重定向问题
问题根源
你的重写规则没生效,核心原因是规则写在了*:80的VirtualHost配置里,但用户实际访问的是HTTPS(*:443端口),规则根本不会被触发。另外,你之前写的规则也没覆盖所有带/redmine后缀的场景,还缺少永久重定向的标记。
正确配置方案
1. 定位443端口的VirtualHost配置
这是Let's Encrypt自动生成的HTTPS配置文件,一般在/etc/apache2/sites-available/目录下,文件名类似redmine.domain.com-le-ssl.conf。
2. 添加重定向规则
在该配置的RewriteEngine on之后,插入以下规则:
# 匹配/redmine及所有/redmine/xxx子路径,永久重定向到根域名 RewriteRule ^/redmine(/.*)?$ https://${REDMINE_SITE}$1 [R=301,L,QSA]
规则细节:
^/redmine(/.*)?$:覆盖/redmine本身和/redmine/issues/1这类带子路径的请求$1:保留原路径中/redmine之后的部分(比如/redmine/wiki会重定向到https://redmine.domain.com/wiki)R=301:标记永久重定向,让浏览器自动更新书签缓存L:终止后续重写规则,避免冲突QSA:保留原URL的查询参数(比如/redmine?filter=open会重定向到https://redmine.domain.com?filter=open)
3. 重启Apache生效
执行命令:
sudo systemctl restart apache2
完整443端口配置片段示例
Define REDMINE_SITE=redmine.domain.com <VirtualHost *:443> ServerName ${REDMINE_SITE} ServerAdmin admin@domain.com RailsEnv production DocumentRoot /opt/redmine/public <Directory "/opt/redmine/public"> Allow from all Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined RewriteEngine on # 新增的重定向规则 RewriteRule ^/redmine(/.*)?$ https://${REDMINE_SITE}$1 [R=301,L,QSA] # Let's Encrypt自动生成的SSL相关配置 SSLCertificateFile /path/to/fullchain.pem SSLCertificateKeyFile /path/to/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf </VirtualHost>
内容的提问来源于stack exchange,提问作者breusshe
相关产品推荐
相关产品推荐

