我想重定向的内容:
example.com => example.net
whatever.example.com => whatever.example.net
是否可以不将每个单独的子域设置为 Apache 中的别名并使用 mod_rewrite 进行重定向来实现这一点?最好只使用 DNS 来实现这一点,但我不确定这是否可行。
答案1
首先,您需要设置 DNS 以指向每个域的相同 Web 服务器。
其次,在您的 apache 设置中,有多种方法。
1)如果您对每组子域使用 VirtualHosts,则只需添加一个 ServerAlias 行,如下所示:
<VirtualHost *:80>
ServerName example.com
ServerAlias example.net
[...] further commands
</VirtualHost>
<VirtualHOst *:80>
ServerName whatever.example.com
ServerAlias whatever.example.net
[...] further commands
</VirtualHost>
2)如果您不想输入每个主机名,您可以使用mod_vhost_alias。这是一个示例配置:
UseCanonicalName Off
VirtualDocumentRoot /path/to/vhosts/-2+
这意味着每个域名都将连接到由域名减去最后部分组成的路径。例如:
www.example.com
将使用/path/to/www.example
www.example.net
将使用/path/to/www.example
example.com
将使用/path/to/example
example.net
将使用/path/to/example
whatever.example.com
将使用/path/to/whatever.example
whatever.example.net
将使用/path/to/whatever.example
答案2
答案主要是否定的,因为 DNS 仅用于在域和其 IP 地址之间建立关联(查看此处接受的答案https://stackoverflow.com/questions/9896877/dns-redirect-domain-to-subdomain.htaccess
)因此,您应该根据此内容对文件进行更改
RewriteEngine on
Options +FollowSymlinks -MultiViews
# handles http redirect sub-dir
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{SERVER_PORT} =80
RewriteCond %{HTTP_HOST} ^(.+\.)?mysite\.com$ [NC]
RewriteRule ^/?(.*)$ http://www.anotheriste.com/feed?v=$1 [R=301,L,QSA,NE]
# handles http redirect non sub-dir
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{SERVER_PORT} =80
RewriteCond %{HTTP_HOST} ^(.+\.)?mysite\.com$ [NC]
RewriteRule ^/?(.*)$ http://www.anotheriste.com/$1 [R=301,L,QSA,NE]
# handles https redirect sub-dir
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{SERVER_PORT} =443
RewriteCond %{HTTP_HOST} ^(.+\.)?mysite\.com$ [NC]
RewriteRule ^/?(.*)$ https://www.anotheriste.com/feed?v=$1 [R=301,L,QSA,NE]
# handles https redirect non sub-dir
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{SERVER_PORT} =443
RewriteCond %{HTTP_HOST} ^(.+\.)?mysite\.com$ [NC]
RewriteRule ^/?(.*)$ https://www.anotheriste.com/$1 [R=301,L,QSA,NE]
您可以在此处找到更多评论(https://stackoverflow.com/questions/5694503/htaccess-redirect-from-any-subdomain-to-another-domain-and-from-directory-to-que)。