9

好的,我已经进行了大量搜索,但仍然找不到足够具体的内容来解决我的问题。

现在我有一个 DNS 记录,将所有其他子域重定向到我的服务器。我要问的是什么会example.mydomain.com返回HTTP/1.1 301并重定向到mydomain.com

如果这已被涵盖,我很抱歉,我只是找不到足够具体的内容。

4

4 回答 4

19

使用 a来匹配除301RewriteCond以外的域并重定向它们:mydomain.com

RewriteEngine On
# If the domain (any domain) is not exactly mydomain.com...
RewriteCond %{HTTP_HOST} !^mydomain\.com$ [NC]
RewriteRule (.*) http://mydomain.com/$1 [L,R=301,QSA]

您还可以更具体地查找mydomain.com. 上面的一个将匹配任何其他域。

# Match only subdomains of mydomain.com
RewriteCond %{HTTP_HOST} ^(.+)\.mydomain\.com$ [NC]
RewriteRule (.*) http://mydomain.com/$1 [L,R=301,QSA]
于 2012-07-09T03:00:46.427 回答
1

本文涵盖 .htacces 和 ModRewrite 以将向主域以外的任何域发出的任何请求重定向到主域。

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !www.newdomain.com$ [NC]
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [L,R=301] 
于 2012-07-09T03:00:56.950 回答
1

在我的情况下,我需要像foo.bar.com>这样的规则bar.com/page/foo,我在 apache 文档中找到了这个:

RewriteCond %{HTTP_HOST} ^(.+)\.bar\.com$ [NC]
RewriteCond %{HTTP_HOST} !www.bar.com$ [NC]
RewriteRule ^(.*)$ http://bar.com/page/%1/$1 [L,R=301]
于 2017-11-19T22:34:36.737 回答
0

根据evan 的博客,如果您将 apache 作为服务器端,则可以使用通配符“*”配置您的 ServerAlias。在这种情况下,对子域的每次访问都将被重定向或路由到根域。

<Virtualhost *:80>
VirtualDocumentRoot "/path/to/your/workspace/%1/public"
ServerName vhosts.dev
ServerAlias *.dev
UseCanonicalName Off
<Directory "/path/to/your/workspace/*">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>
</Virtualhost>
于 2013-07-25T03:45:45.990 回答