由于服务器迁移,我尝试将所有URI从/rc
,/roundcube
,/sm
或/squirrelmail
开始直接导向https://webmail.{HTTP_HOST}
以下mod_rewrite代码:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$
RewriteCond %{REQUEST_URI} ^/(rc|roundcube|sm|squirrelmail)(\/)?(.*)?$
RewriteRule ^/(.*) https://webmail.%1 [R=302, L]
因为我希望这个重定向能够影响机器上的所有虚拟主机,所以我将它放在Apache的httpd.conf文件中的虚拟主机指令中。
服务器确实启用了mod_rewrite,但上面的内容似乎什么也没做!
也许有人可以发现我的错误?
预期结果的一个例子是:
http://www.mydomain.com/rc - > https://webmail.mydomain.com
应该能够使用或不使用www
或尾随/
来处理任务,并且可以在用户为原始网址添加书签时包含参数。
答案 0 :(得分:1)
我认为如果您只是将其放在 httpd.conf 文件中,则该规则没有上下文。尝试将其包装在一个位置或目录中(位置可能更好):
<Location "/">
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/(rc|roundcube|sm|squirrelmail)(/)?(.*)?$
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$
RewriteRule ^/(.*) https://webmail.%2 [R=302,L]
</Location>
并摆脱R=302,