.htaccess重定向包含点的域

时间:2011-05-17 14:16:11

标签: regex .htaccess

我正在使用我在StackOverflow上找到的一些.htaccess代码将非www域重定向到他们的www对应物:

<IfModule mod_rewrite.c>
    RewriteEngine on

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

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.+)$ index.php/$1
</IfModule>

问题是,这也适用于我们本地开发服务器上的域,并将http://test/重定向到http://www.test/。这没用,因为我们的开发服务器上不存在域www.test。这意味着当网站上线时,需要修改用于开发中的站点的.htaccess文件。

是否有一种简单的方法来添加一行来检查域名是否至少有一个点?如果它包含一个点,请继续添加www.。如果没有,请停止。

1 个答案:

答案 0 :(得分:0)

您可以在RewriteCond之前添加另一个RewriteRule来排除您的测试服务器:

RewriteCond %{HTTP_HOST} !^test$

我认为明确排除比这个点数更好。

编辑:以下是基于点的版本:

RewriteCond %{HTTP_HOST} !\.