301将子域重定向到插件域上的子目录

时间:2013-08-25 20:53:40

标签: apache .htaccess redirect mod-rewrite subdomain

我的网站设置是这样的

**Main Domain** - domain.com

**Addon domain** - addon.com

**blog sub domain** - blog.addon.com

**blog sub page** - blog.addon.com/post/54546/url-slug-here

现在addon.com是hostgator共享帐户上的附加域,其中根域为domain.com

我想将blog.addon.com 301重定向到addon.com/directory/blog

我已经尝试了

RewriteEngine on
RewriteCond %{HTTP_HOST} ^blog.addon.com$ [NC]
RewriteRule ^/?$ "http://addon\.com/directory/blog/" [R=301,L]  

不幸的是,上面的代码根本不起作用。

我也试过了,

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

上述代码都不起作用。当我访问blog.addon.com时 - 它只是向我显示我在那里的默认index.html。


来到我的问题的第2部分

我还需要将blog.addon.com/post/54546/url-slug-here重定向到addon.com/pagename,我完全不知道如何实现这一点。

我已经查了很多查询并尝试了一堆,但就像之前我只是得到一个404而且除此之外什么都没有。

我只是希望重定向该特定URL,而不是整套或外卡。


我认为这与域名是主域名的插件有关。但wordpress永久链接代码和我的其他本地301重定向(如domain.com/somepagedomain.com/someotherpage完美无缺。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:3)

鉴于您的blog.addon.com位于domain.com/blog文件夹,请将关注.htaccess放在文件夹domain.com/blog中:

Options +FollowSymLinks -MultiViews

RewriteEngine on
RewriteBase /

# Only redirect if the domain is:
RewriteCond %{HTTP_HOST} ^blog\.addon\.com$
# Redirect anything to the domain URL 
# http://www.addon.com/directory/blog/anything
RewriteRule ^/?(.*)$ http://www.addon.com/directory/blog/$1 [L,R=301]

但是,如果您想重定向到addon.com/blog,请将RewriteRule更改为:

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

如果您想简单地将其重定向到www.addon.com,请使用它:

RewriteRule ^/?(.*)$ http://www.addon.com/$1 [L,R=301]

对于第二部分,您可以在.htaccess上使用此规则高于第1部分规则,因为规则按顺序执行:

RewriteCond %{HTTP_HOST} ^blog\.addon\.com$
RewriteRule ^post/\d+/([^/]+)$ http://www.addon.com/$1 [L,R=301]

如果您想要可以使用的确切重定向,则上述规则将重定向为通配符:

RewriteCond %{HTTP_HOST} ^blog\.addon\.com$
RewriteRule ^post/54546/url-slug-here$ http://www.addon.com/url-slug-here [L,R=301]