仅当域匹配时才进行htaccess重定向

Dev*_*xon 9 apache .htaccess redirect

我有一个问题,我需要在它到达php之前重定向我的域.当它达到执行标题的能力时,为时已晚.

我能怎么做

if (domain == 'www.example.com')
redirect www.domain.com;
Run Code Online (Sandbox Code Playgroud)

在我的.htaccess?

Jon*_*Lin 15

使用mod_rewrite

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R,L]
Run Code Online (Sandbox Code Playgroud)

  • @webjunkie这就是为什么有时候,即使它是针对htaccess的,我也会使用正则表达式:`^ /?(.*)$`来匹配前导斜杠(如果有的话),以防它被别处使用. (2认同)

Pet*_*erA 8

从Apache 2.4开始,您可以使用<If>指令来实现建议的功能:

<If "req('Host') == 'www.example.com'">
  RedirectMatch (.*) http://www.example2.com$1
</If>
Run Code Online (Sandbox Code Playgroud)

对于与www匹配或不匹配的不区分大小写的版本,您可以执行以下操作:

<If "req('Host') =~ /example.com/i">
  RedirectMatch (.*) http://www.example2.com$1
</If>
Run Code Online (Sandbox Code Playgroud)

资料来源: