如何重定向不存在的子域?(How do I redirect subdomains that do

2019-08-19 09:14发布

我想在下面的方式使用的.htaccess重定向。 我不是所有熟悉的.htaccess,所以我不知道这是可以做到。 另外,我不知道我怎么打算做如下的搜索引擎优化的最佳做法。

www.domain.com                > domain.com 301

ks.domain.com                 > kansas.domain.com 301

ia.domain.com                 > iowa.domain.com 301

domain.com/sites              > domain.com 301

domain.com/sites/iowa         > iowa.domain.com 301

nonexistent.domain.com        > domain.com 302

domain.com/sites/nonexistent  > domain.com 302

我最大的问题是,如果我能发现一个不存在的子域和重定向。 我很想看到所有的上面完成。

Answer 1:

首先,你需要通过与创建一个子域添加通配符子域*正如它的名字,只有当您的虚拟主机允许你这样做。 而这必须在你.htaccess ,试图测试一下,看看它的工作原理:

Options +FollowSymlinks
RewriteEngine on

RewriteCond %{HTTP_HOST} ^www\.domain\.com
RewriteRule ^(.*)$ http://domain.com/$1 [R=301]

RewriteCond %{HTTP_HOST} ^ks\.domain\.com
RewriteRule ^(.*)$ http://kansas.domain.com/$1 [R=301]

RewriteCond %{HTTP_HOST} ^ia\.domain\.com
RewriteRule ^(.*)$ http://iowa.domain.com/$1 [R=301]

RewriteCond %{HTTP_HOST} ^domain\.com
RewriteCond %{REQUEST_URI} ^/sites/?$
RewriteRule ^(.*) / [R=301]

RewriteCond %{HTTP_HOST} ^domain\.com
RewriteCond %{REQUEST_URI} ^/sites/iowa/?$
RewriteRule ^(.*) http://iowa.domain.com/ [R=301]

RewriteCond %{HTTP_HOST} ([a-z0-9-]+)\.domain\.com$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) http://domain.com/ [R=302]

RewriteCond %{HTTP_HOST} ^domain\.com
RewriteCond %{REQUEST_URI} ^/sites/([a-z0-9-_]+)/?
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^(.*) http://domain.com/ [R=302]

只需使用-f来测试请求的文件存在且是一个普通文件, -s如果它存在,并且有一个文件大小大于0且-d来测试它是否存在且是一个目录。



Answer 2:

如果你想不存在特定子域,那么你就只需要创建它们,然后重定向。

要捕捉所有错误的子域,说我不小心输入metaa.stackoverlow.com ,使用通配符: *.stackoverflow.com 。 在的cPanel,这只是涉及滴答询问复选框“做通配符? 或类似。 为.htaccess直接编辑,只需输入*代替每个特定子域。

请注意,这也适用于任何目录:

subdomain.site.com/*

*.site.com/dir

*.site.com/*



文章来源: How do I redirect subdomains that do not exist?