How to dynamically redirect www-based URLs to non-www URLs with multiple domains in same VirtualHost

岁酱吖の 提交于 2019-12-20 12:41:06

问题


I've got a VirtualHost that looks something like:

<VirtualHost *:80>

  ServerName  domain1.com
  ServerAlias www.domain1.com domain2.com www.domain2.com

</VirtualHost>

When someone visits www.domain1.com/test, they should be redirected to:

domain1.com/test

When someone visits www.domain2.com/test, they should be redirected to:

domain2.com/test

My current RewriteRules are lacking.

Edit: Here's what I've got so far:

# Rewrite www to non-www
RewriteEngine on
RewriteCond %{HTTP_HOST} www\.%{HTTP_HOST}$ [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [L,R=301]

Obviously, this generates an infinite redirect loop.


回答1:


Your RewriteCond is a bit wonky. I'm surprised it does anything at all, since it would seem to be trying to match the host www.domain1.com against the pattern www\.www.domain1.com. These directives worked for me:

# Redirect www to non-www
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1$1 [L,R=301]



回答2:


No need for rewrites.

<VirtualHost *:80>
    ServerName domain1.com
    ServerAlias domain2.com
    ... real vhost settings ...
</VirtualHost>

<VirtualHost *:80>
    ServerName www.domain1.com
    Redirect permanent / http://domain1.com/
</VirtualHost>
<VirtualHost *:80>
    ServerName www.domain2.com
    Redirect permanent / http://domain2.com/
</VirtualHost>



回答3:


You can have multiple VirtualHosts in a configuration file, so you should change your config to this:

<VirtualHost *:80>
    ServerName domain1.com
    ServerAlias www.domain1.com
</VirtualHost>

<VirtualHost *:80>
    ServerName domain2.com
    ServerAlias www.domain2.com
</VirtualHost>

You can add another VirtualHost for each domain you want to do.



来源:https://stackoverflow.com/questions/529334/how-to-dynamically-redirect-www-based-urls-to-non-www-urls-with-multiple-domains

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!