1

由于服务器迁移,我尝试将所有以/rc, /roundcube,开头的 URI 定向到使用/sm以下mod_rewrite 代码:/squirrelmailhttps://webmail.{HTTP_HOST}

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

当用户为原始 URL 添加书签时,它应该能够处理带有或不带有或www尾随和可能包含的参数的任务。/

4

1 回答 1

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,

于 2013-09-06T18:59:09.830 回答