使用.htaccess重定向到www站点的子域路由

时间:2017-10-30 15:08:43

标签: php regex apache .htaccess mod-rewrite

我有一个网站,我将htaccess配置为将所有流量重定向到www网站。所以我的网站是这样的:www.domain.com

现在我想支持所有注册用户的子域名功能,例如username.domain.com但是我当前的htaccess规则不允许这样做,当我点击这样的URL然后它重定向子域URL以包括www我也不知道不想要。 例如:

我点击了username.domain.com,它变成了www.username.domain.com

这是我目前的htaccess代码:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . index.php

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

如何为主站点支持这两个www?因此,当用户点击子域URL时,它不应该在URL中添加www。

我不是URL重写的专家,所以如果我错过了一些明显的东西,我会道歉。

由于

2 个答案:

答案 0 :(得分:2)

在Apache 2.4+上,您可以在站点根目录中使用这些规则.htaccess:

RewriteEngine on

# if not main domain skip all rules
RewriteCond %{HTTP_HOST} !^(?:www\.)?domain\.com$ [NC]
RewriteRule ^ - [L]

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ %{REQUEST_SCHEME}://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,NE,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

答案 1 :(得分:1)

您可以使用:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php