2011-12-09 34 views
12

我将一个域重定向到另一个域,但我想保留重定向中的路径。例如,我想访问www.example.com/services/education/page.html,但我的重定向会将它们带到www.new-example.com/services/education/page.html。我在.htaccess文件中写什么来保存路径“/services/education/page.html”?如何在重定向整个域的同时保留路径

现在我有:

redirect 301 http://www.example.com/ http://www.new-example.com/ 

但我不知道是否可行与否(不能测试还没有,因为我在等待域详细信息等)。我只想确定何时将网站投入使用。这是正确的还是我离开基地?

谢谢!

+0

在使用现有网域获取您的网域详情之前,您仍然可以进行测试,例如google.com甚至是不存在的,因为你只想看到301重定向是在你想要的所有情况下发布的,同时保留你的路径。 –

+1

Helicon有一个RegexTest应用程序,它允许您测试.htaccess条目。它甚至会根据您的输入/测试为您制定规则。 – Aaron

回答

22

这应做到:

RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} !new-example.com$ [NC] 
RewriteRule ^(.*)$ http://new-example.com/$1 [L,R=301] 
+0

我.htaccess文件已经在它具有这个代码(WordPress的):<!IfModule mod_rewrite.c> RewriteEngine叙述在 RewriteBase/ 重写规则^索引\ .PHP $ - [L] 的RewriteCond%{REQUEST_FILENAME} -f 的RewriteCond %{REQUEST_FILENAME}!-d RewriteRule。 /index.php [L] 我需要这4行代码给你吗?或者我会有一个问题把RewriteEngine打开两次(对于RewriteBase /是相同的) – jasonaburton

+0

如果它们已经存在于你的.htaccess中,则跳过前两行 –

+0

这些重定向不起作用。在我的.htaccess中唯一的代码发布在我上面的评论中。有没有理由不工作? – jasonaburton

5

尝试加入您的example.com域的根目录下以你的.htaccess

RewriteEngine On 
RewriteBase/

#for all requests to www.example.com 
RewriteCond %{HTTP_HOST} ^www\.example\.com$ 
#redirect them to new-example 
RewriteRule (.*) http://www.new-example.com/$1 [R=301,L] 
4

你原来的命令使用mod_alias Apache模块,和它会工作,虽然你可能想更新到:

Redirect 301/http://www.new-example.com/ 

删除确切当前(旧)域的域意味着指向该文件夹的所有域将被发送到新域,从而使该单行脚本更健壮。

其他答案使用mod_rewrite Apache模块。如果你已经安装了这个软件,那很好用,尽管它有4行以上的代码。此外,mod_alias是“基本”包的一部分,所以应该在所有Apache服务器上,而mod_rewrite是可选的扩展,所以有些可能没有。

+0

工作得很好。这似乎是最好的答案,因为不依赖于mod_rewrite。 –

相关问题