如何使整个网站支持';www';和';非www';使用.htaccess

如何使整个网站支持';www';和';非www';使用.htaccess,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我刚刚将我的站点移动到一个新服务器,这是MacOSX服务器 问题是我没有太多的控制权,有一个小问题[或者对其他人来说可能是大问题] 当人们访问我的网站时http://mydomain.com无论是否使用www都可以,但我在名为forum的子目录中有另一个文件夹,我只想访问这个网站,就像http://www.mydomain.com/forum当我访问http://mydomain.com/forum这将导致找不到页面,我当前的解决方案是在我的站点所在的文件夹www中创建一个目录,该文件夹名为fo

我刚刚将我的站点移动到一个新服务器,这是MacOSX服务器

问题是我没有太多的控制权,有一个小问题[或者对其他人来说可能是大问题]

当人们访问我的网站时
http://mydomain.com
无论是否使用
www
都可以,但我在名为
forum
的子目录中有另一个文件夹,我只想访问这个网站,就像
http://www.mydomain.com/forum
当我访问
http://mydomain.com/forum
这将导致找不到页面,我当前的解决方案是在我的站点所在的文件夹
www
中创建一个目录,该文件夹名为
forum
,重定向到
http://www.mydomain.com/forum

现在我的问题是,我如何创建一个对.htaccess的重写规则,使其同时支持www和非www版本,以便访问者可以选择访问我的网站

对不起,如果我发错了地方


谢谢

有很多方法可以剥猫皮,但我的直觉告诉我,两个行为不同的域应该是不同的
VirtualHost
条目,可能有不同的文档根

在本例中,我将创建两个指向相同
DocumentRoot
的虚拟主机,因为在大多数情况下
http://example.com
http://www.example.com
是同一个站点,除了
example.com
想要禁止某些事情

http://example.com
可以查找特定的URL,如
/forum
,但失败,允许其他URL继续访问文档根目录

http://www.example.com
不关心这些;它只允许正常访问其URL。

我使用以下方法:

<VirtualHost *:80>
    ServerName domain.com
    DocumentRoot            /u02/web/hosting/domain.com

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^domain\.com
    RewriteRule ^/(.*)$ http://www.domain.com/$1 [L,R=Permanent,L]
</VirtualHost>

<VirtualHost *:80>
    ServerName www.domain.com        
    DocumentRoot            /u02/web/hosting/www.domain.com
....
</VirtualHost>

ServerName域名.com
DocumentRoot/u02/web/hosting/domain.com
重新启动发动机
重写cond%{HTTP_HOST}^domain\.com
重写规则^/(.*)$http://www.domain.com/$1[L,R=永久,L]
服务器名www.domain.com
DocumentRoot/u02/web/hosting/www.domain.com
....

第一个vhosts只是将所有流量从domain.com重定向到第二个vhosts www.domain.com

我想到了这个解决方案,但它不起作用,因为他可能希望
domain.com
不进行外部重定向,而只是作为网站的备用名称,但功能有所减少(block尝试以这种方式访问
/forum
)。尽管301重定向可能是处理对
example.com/forum
的访问的更好方法,而不是404重定向。