Php 通过HTACCESS重定向URL

Php 通过HTACCESS重定向URL,php,.htaccess,redirect,mod-rewrite,Php,.htaccess,Redirect,Mod Rewrite,我在一个我刚刚购买的域名上创建了一个博客,并希望将另一个博客设置为子域名 现在,如果这个二级博客在不久的将来像我希望的那样迅速发展起来,我想把它建立在自己的域名上,但我想知道,将拥有现有url的人重定向到新的url有多容易 我的文件夹结构如下: domain.com >>> htaccess . index.php . about.php . blog/ . features/ 我的博客和功能文件夹还包含一个htaccess文件及其自己的索引页面+其他相关php页面 我想知道

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

现在,如果这个二级博客在不久的将来像我希望的那样迅速发展起来,我想把它建立在自己的域名上,但我想知道,将拥有现有url的人重定向到新的url有多容易

我的文件夹结构如下:

domain.com >>> htaccess . index.php . about.php . blog/ . features/
我的
博客
功能
文件夹还包含一个
htaccess
文件及其自己的
索引
页面+其他相关php页面

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


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

是的,您需要做的就是使用以下方法:

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

因此,当有人访问旧域时,它会指向新域。

一旦您将子域
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://new-domain.com%{REQUEST_URI}[R,L]这就是它,它进入主htaccess?这意味着我可以删除所有其他文件和文件夹,只需在子域中找到一个
htaccess
?太棒了!他害怕一旦网站建立就必须创建大量重定向。谢谢,小心点。该规则将重定向所有内容,包括对主博客的查询。您想要的是只将请求重定向到您的子域。为此,您需要一个重写条件(仅在满足条件时重定向),请参阅下面的我的答案。请小心。该规则将重定向所有内容,包括对主博客的查询。您想要的是只将请求重定向到您的子域。为此,如果用户说
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\u URI
。如果你将一个域移动到另一个域,URL中没有查询字符串的可能性有多大?似乎是这样的我认为包括QSA是有意义的,即使它不会对所询问的特定URL产生影响。