如何重定向不存在的子域?

The*_*erk 5 subdomain .htaccess mod-rewrite rewrite url-rewriting

我试图以下列方式使用.htaccess重定向.我不是那么熟悉.htaccess,所以我不确定它是否可以完成.另外,我不知道我打算如何遵循SEO的最佳实践.

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
Run Code Online (Sandbox Code Playgroud)

我最大的问题是如果我能检测到不存在的子域并重定向.我很想知道上述所有内容是如何完成的.

5er*_*ant 7

首先,*只有在您的Web主机允许的情况下,才需要通过创建名称为子域的子域来添加通配符子域.这必须在你的.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]
Run Code Online (Sandbox Code Playgroud)

只是-f用来测试所请求的文件是否存在并且是否是常规文件(-s如果存在且文件大小大于0)并-d测试它是否存在并且是目录.

  • 是.我最后做的有点不同,因为我的结构发生了变化,但是你的信息帮助我了解了我需要做什么. (2认同)