如何将非www重定向到我的域中的www

时间:2016-05-20 14:42:07

标签: php apache .htaccess redirect ubuntu-14.04

我遇到问题我只想将mydomain.com重定向到www.mydomain.com,但我发现的解决方案使我的oder子域名如admin.mydomain.com重定向到www.admin.mydomain。 COM。 我有一个使用Apache的Ubuntu 14.04并且使用Laravel(PHP)。

我只是希望这发生在mydomain.com / ....到www.mydomain.com / ...但是当开头有其他东西时没有,比如admin.mydomain.com

我在这里留下了我找到的解决方案但是我刚刚解释过这个小问题。

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

3 个答案:

答案 0 :(得分:1)

以下是我用来强制使用www。

的规则
RewriteCond  %{HTTP_HOST} !^www\. [NC]
RewriteRule  ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

这应该只放在具有域

的顶级定义的VirtualHost中
ServerName exmaple.com

每个其他子域都应该有自己的虚拟主机定义。

答案 1 :(得分:1)

您可以指定要重定向的域:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

答案 2 :(得分:1)

# Redirect anything except admin.yourdomain.com, admin1.yourdomain.com
RewriteCond %{HTTP_HOST} !^(admin|admin1)\.yourdomain\.com$ [NC]
# Redirect to www.yourdomain.com, without changing the URI
RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [L,R=302]

对于多个子域,这将起作用

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