.htaccess通配符重定向,不包括某些子域

时间:2014-01-19 05:36:26

标签: apache .htaccess redirect

我们的应用程序有一个通配符子域,我们希望在所有实例中重定向到根域,除了我们允许的一些子域和应用程序处理方式不同。

例如:

  • subdomain.example.com
  • anything.example.com

应该全部重定向到example.com

但是,我们还希望其他子域保持不变。

例如:

  • api.example.com
  • staging.example.com

以下是我们目前的.htaccess文件:

<IfModule mod_rewrite.c>
    RewriteCond %{HTTPS} !=on
    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
    RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
</IfModule>

我尝试使用负面的正则表达式,但没有运气:

<IfModule mod_rewrite.c>
    RewriteCond %{HTTPS} !=on
    RewriteCond %{HTTP_HOST} !^(api\.|staging\.)(.+)$ [NC]
    RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
</IfModule>

1 个答案:

答案 0 :(得分:0)

您可以使用此规则:

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} !^(?:api|staging)\.
RewriteCond %{HTTP_HOST} ^[^.]+\.([^.]+\..+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]