.htaccess 和精确匹配

.htaccess 和精确匹配

我无法重写以下内容:

  • 我的站点
  • mysite.com/myproduct
  • www.mysite.com
  • www.mysite.com/myproduct

mysite.com/myproduct/

无论我尝试什么,它要么缺少重写,要么重写其他网址。我猜这应该是 4 对后续的 Cond 和 Rule,因为我只需要精确的 4 个重定向,但我对语法和表达式不够熟悉。

非常感谢您的帮助。

答案1

首先,不要尝试将没有斜线的内容改写为有斜线的内容 - 这样做会招致灾难。斜线必须完全匹配!

第二 - 不建议在 htaccess 中重写,并且其工作方式与 httpd.conf 不同。

第三 - 为什么要重写?目标是什么?

如果您希望这 4 个前缀的所有请求都最终到达同一个网站,请创建一个新的 vhost,并将其与重定向匹配,如下所示:

<VirtualHost *:80>
  ServerName www.mysite.com
  Redirect /myproduct/ http://mysite.com/myproduct/
</VirtualHost>

<VirtualHost *:80>
  ServerName mysite.com
  RedirectMatch !^/myproduct/.* http://mysite.com/myproduct/
</VirtualHost>

相关内容