如何将域重定向到根域,但将子域名主页转到其他位置?

时间:2015-10-19 16:55:44

标签: apache .htaccess mod-rewrite seo

尝试通过.htaccess将子域重定向到Apache服务器上的根域,但需要将子域主页重定向到其他位置。例如:

blog.example.com --> example.com/blog/
blog.example.com/post-title --> example.com/post-title

目前我有这个:

RewriteEngine On
RewriteRule ^/?$    http://example.com/blog/    [R=301,L]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

我觉得应该有用,但我收到的“重定向太多”错误。

为了让事情变得更加尴尬,我需要手动重定向到新位置的一些迷路页面,例如:

blog.example.com/incorrect-category-name-1 --> example.com/correct-category-name-1
blog.example.com/incorrect-category-name-2 --> example.com/correct-category-name-2

这一切都可以在1 .htaccess文件中使用吗?

1 个答案:

答案 0 :(得分:0)

.htaccess的根目录中的blog.example.com文件中尝试以下操作:

RewriteEngine On

# If the HTTP_HOST is not blog.example.com then finish
# - Avoid a redirect loop
RewriteCond %{HTTP_HOST} !=blog.example.com [NC]
RewriteRule ^ - [L]

# Specific redirects...
RewriteRule ^$ http://example.com/blog/ [R=302,L]
RewriteRule ^incorrect-category-name-1$ http://example.com/correct-category-name-1 [R=302,L]
RewriteRule ^incorrect-category-name-2$ http://example.com/correct-category-name-2 [R=302,L]

# Catch all redirect
RewriteRule (.*) http://example.com/$1 [R=302,L]

当您感到满意时,将302(临时)重定向更改为301(永久)重定向。浏览器会捕获永久重定向,因此可以使测试变得棘手。确保首先清除了浏览器缓存。