Apache VirtualDocumentRoot重定向不存在的域

时间:2014-01-07 12:16:40

标签: apache .htaccess httpd.conf

我正在使用VirtualDocumentRoot来拥有多个域和子域。 一切顺利,直到有人试图通过IP或不存在的域到达我的服务器。例如10.10.10.10导致404 Not Found错误。 也许有人可以帮我找到将不存在的域或IP重定向到我的主域www.example.com的解决方案?

让我说清楚:不存在的子域名正在被重定向,但不存在的域名不是。

HTTPD.CONF:

<VirtualHost *:80>
        ServerName default
        ServerAlias *
        #www.example.com == /httpdocs/example.com/www/
        VirtualDocumentRoot /httpdocs/%-2.0.%-1/%-3
    </VirtualHost>

/httpdocs/example.com/.htacces:

# Rewrite all non-existing subdomains to www.
RewriteCond %{HTTP_HOST} example\.com$
RewriteRule ^.*$ http://www.example.com%{REQUEST_URI} [R=301,L]

2 个答案:

答案 0 :(得分:1)

我的问题的解决方案是:
将此添加到我的webroot文件夹中的.htacces /httpdocs/.htaccess

这将导致所有不存在的域在根文件夹中结束操作,然后由.htaccess获取它们。 (不再有符号链接)

# Enable Rewrite Engine
RewriteEngine on

# Rewrite all non-existing domains to example.com
RewriteCond %{HTTP_HOST} !example\.com$ [NC] #just add your main domain here
RewriteRule ^.*$ http://www.example.com%{REQUEST_URI} [R=301,L]

答案 1 :(得分:0)

mod_vhost_alias中似乎存在“错误”,如果内插目录不存在,则无法指定故障转移/默认目录(请参阅this page底部的注释),以便我不认为你可以处理任意域名,你需要使用插值规则为你想要匹配的每个域名创建目录。

但是,对于IP地址,我相信如果您从此目录/httpdocs/230.239/132//httpdocs/gdwebs.nl/www/创建一个符号链接,那么它将起作用。

或者,如果您无法创建符号链接,请创建/httpdocs/230.239/132/目录并使用htaccess重定向请求。