目前所有的名称都指向同一个Web服务器文件夹,这是正确的。 也就是说,domain.net,domain.org等工作,而不redirect到主.com
如何访问.org和.net将浏览器redirect到domain.com?
这应该是基本的,但我无法弄清楚最好的办法。
我build议你使用mod_rewrite RewriteRule ,而不是使用mod_alias Redirect 。 由于国防部重写更通用。
<VirtualHost *:80> ServerName domain.org ServerAlias www.domain.org domain.net www. domain.net RewriteEngine on RewriteCond %{HTTP_HOST} ^(www\.)?domain\.(net|org)$ [NC] RewriteRule ^ http://domain.com%{REQUEST_URI} [L,R=301] </VirtualHost> <VirtualHost *:80> ServerAdmin [email protected] DocumentRoot /path/to/documentroot ServerName domain.com ServerAlias www.domain.com ErrorLog logs/dummy-host.example.com-error_log CustomLog logs/dummy-host.example.com-access_log common </VirtualHost>
确保你有NameVirtualHost *:80 取消注释 。
说明:
RewriteEngine on
设置RewriteEngine
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.(net|org)$ [NC]
匹配%{HTTP_HOST} :ie:主机的基本URL。 有关RewriteCond & http headers更多http headers请访问: RewriteCond 。 [NC]是一个标志:'nocase | NC'(无例)
这会使testing不区分大小写,在扩展的TestString和CondPattern中都会忽略'AZ'和'az'之间的差异。 该标志仅对TestString和CondPattern之间的比较有效。 它对文件系统和子请求检查没有影响。
你也必须redirect以WWW开头的URL。 这就是为什么^(www\.)在模式中。
RewriteRule ^ http://domain.com%{REQUEST_URI} [L,R=301]
如果在RewriteCond发生匹配,则将URL重写为domain.com 。 添加任何请求URI(如果存在)。 即这个请求的URI(相对于DOCUMENT_ROOT)。
如果URl是: domain.com/web/hello.php那么REQUEST_URI=/web/hello.php
@意大利面,
我在这种情况下做的是创build一个单独的虚拟主机块
<VirtualHost *> ServerName domain.net ServerAlias domain.org Redirect permanent http://domain.com </VirtualHost>
希望有所帮助。
Ismael Casimpan