【问题标题】:URL Redirect Via HTACCESS通过 HTACCESS 重定向 URL
【发布时间】:2016-06-11 15:59:49
【问题描述】:

我正在我刚刚购买的域上创建一个博客,并希望将另一个博客设置为子域。

现在,如果这个二级博客能像我希望的那样在不久的将来起飞,我想将它设置在它自己的域上,但我想知道重定向那些拥有的人是多么容易现有网址到新网址。

我有一个这样的文件夹结构:

domain.com >>> htaccess . index.php . about.php . blog/ . features/

我的BlogFeatures 文件夹还包含一个htaccess 文件和它们自己的index 页面+其他相关的php 页面。

我想知道您是否可以仅使用位于主 domain.com 文件夹下的主 htaccess 文件将人们重定向到新域,或者您是否必须编辑每个子文件夹中的 htaccess。

这样做的最佳方法是什么,在某种程度上,如何成功地做到这一点?

【问题讨论】:

  • RewriteRule ^ http://new-domain.com%{REQUEST_URI} [R,L] 就是这样
  • 这在 Primary htaccess 中?这意味着我将能够删除所有其他文件和文件夹,并且只有一个 htaccess 位于子域中?
  • 太棒了!害怕一旦网站建立就必须创建大量重定向的想法。谢谢HJ
  • 小心。该规则将重定向所有内容,包括对您的主博客的查询。您想要的只是将请求重定向到您的子域。为此,您需要一个重写条件(仅在满足条件时重定向)请参阅下面的答案。

标签: php .htaccess redirect mod-rewrite


【解决方案1】:

是的,您需要做的就是使用以下内容:

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.newblog.com/$1 [R=301,L]

所以当有人访问旧域时,它会直接访问新域。

【讨论】:

  • 小心。该规则将重定向所有内容,包括对您的主博客的查询。您想要的只是将请求重定向到您的子域。为此,您需要一个重写条件(仅在满足条件时才重定向)查看我的答案
【解决方案2】:

将子域 sub.mydomain.com 移动到 newdomain.com 后,您可以使用 htaccess mod_rewrite 模块将查询从子域重定向到新域。您可以将规则放在控制旧域的顶级 htaccess 文件中。对于上面的示例域,它将类似于:

Options +FollowSymLinks
# turn on mod_rewrite
RewriteEngine On
RewriteBase /

# only redirect if query is for the sub domain (non case-sensitive match)
RewriteCond %{HTTP_HOST} ^sub\.mydomain\.com$ [NC]

# rewrite all urls (that match the subdomain host) to new domain, 
# be sure to include the original path and query string
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [QSA,L,R=301]

如果您的新域不使用 www 前缀,只需将其从重写规则中删除即可。 QSA 告诉服务器发送查询字符串(? 字符之后的部分 url)。 L 表示停止处理 htaccess 文档。 R=301 的意思是告诉浏览器从那时起,只要用户尝试访问sub.mydomain.com,它就可以直接访问newdomain.com

【讨论】:

  • 这样,如果用户说http://old-domain.com/features/interviews/1111/an-interview-with-a-band,他们会自动重定向到http://new-domain.com/features/interviews/1111/an-interview-with-a-band
  • 不完全是。您在 OP 中说过您只想将辅助博客从子域重定向到新站点(而不将主博客从基域重定向)对吗?去old_domain.com的用户不会被重定向(她不会满足RewriteCond条件,但是去subdomain.old_domain.com的用户会被重定向。另外,上面的规则会保留查询字符串,不像thickguru的回答。subdomain.olddomain.com/path?post=123应该被重定向到newdomain.com/path?post=123。这就是为什么我在规则后面有QSA标志。
  • 这里不需要使用 QSA。当目标路径还包含查询字符串然后将它们组合起来时,QSA 很有帮助。
  • 是的,但这只是REQUEST_URI 的一个例子。如果您将一个域移动到另一个域,那么所有 URL 都没有查询字符串的可能性有多大?在我看来,包含 QSA 是有意义的,即使它不会对询问的特定 URL 产生影响。
猜你喜欢
  • 2014-01-16
  • 1970-01-01
  • 2020-05-03
  • 2021-04-02
  • 1970-01-01
  • 2017-04-15
  • 1970-01-01
  • 1970-01-01
  • 2012-03-12
相关资源
最近更新 更多