【问题标题】:301 Redirect Subdomain to subdirectory on an addon domain301 将子域重定向到插件域上的子目录
【发布时间】:2013-08-28 07:42:22
【问题描述】:

我的网站设置是这样的

**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)完美运行。

任何帮助将不胜感激。

【问题讨论】:

  • 我们分部分来说,你有hostgator的婴儿计划还是允许无限域的计划? addon.com 的根文件夹是什么,我的意思是当您将其创建为插件时,我相信您需要为其设置根目录的子文件夹,即路径?您还创建的 2 个子域的根文件夹是什么?
  • 嗨,这里是答案。 1. 是的,我有婴儿计划,它确实允许无限域。 2. addon.com 位于 domain.com/addon - addon 是根文件夹。 addon.domain.com 是此处创建的子域。 3.子域blog.addon.com有根文件夹domain.com/blog
  • 婴儿计划确实允许无限域link - 它是基于单域的孵化计划。
  • 所以您希望 blog.addon.com 在内部重定向到 addon.com/directory/blog 或在视觉上重定向到 addon.com/blog?只是想确保我得到你需要的东西。
  • 前者。我希望 blog.addon.com 重定向到 addon.com/directory/blog

标签: apache .htaccess redirect mod-rewrite subdomain


【解决方案1】:

鉴于您的 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 上的 part 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]

【讨论】:

  • 我实际上在您发布此内容的同时找到了解决方案。我的解决方案与您的解决方案非常相似,除了将代码放在 domain.com 的根目录中而不是 domain.com/blog - 因为将它放在 addon.com 的根目录中根本不起作用。感谢您花时间回答这个问题。感谢您的回复。
猜你喜欢
  • 2011-07-08
  • 1970-01-01
  • 1970-01-01
  • 2016-09-23
  • 2013-09-26
  • 2011-06-28
  • 2013-10-19
  • 2012-04-01
  • 1970-01-01
相关资源
最近更新 更多