2015-11-05 92 views
0

我在使用mod_rewrite的时候在.htaccess中有点新手,请原谅我。我已经搜索了很多答案,但也许我没有找到正确的地方,或者.htaccess甚至不是做这种事情的正确地方。Apache重定向(使用.htaccess)

假设我拥有两个域名:joebloggs.combloggs.com

当你把joebloggs.com到浏览器我想它重定向到https://www.bloggs.com/joe

但是,如果你去joebloggs.com/foobar,我想重定向到https://www.bloggs.com/foo/bar

注:我知道这似乎适得其反,从一个较短的网址去一个较长的一个,但问题是,营销材料已与URL joebloggs.com/foobar传播...: -/

我试图在.htaccess文件中构造这种结构的方式迄今尚未奏效。

<IfModule mod_rewrite.c> 
RewriteEngine on 
# 
# redirect joebloggs.com/foobar to https://www.bloggs.com/foo/bar 
RewriteCond %{HTTP_HOST} ^joebloggs\.com\/foobar [NC,OR] 
RewriteCond %{HTTP_HOST} ^www\.joebloggs\.com\/foobar [NC] 
RewriteRule ^(.*)$ https\:\/\/www\.bloggs\.com\/foo\/bar [L,R=301,NC] 
# 
# redirect joebloggs.com to https://www.bloggs.com/joe 
RewriteCond %{HTTP_HOST} ^joebloggs\.com$ [NC,OR] 
RewriteCond %{HTTP_HOST} ^www\.joebloggs\.com$ [NC] 
RewriteRule ^(.*)$ https\:\/\/www\.bloggs.com\/joe [L,R=301,NC] 
</IfModule> 

当我把joebloggs.com到浏览器,它重定向正确地https://www.bloggs.com/joe - 但是当我尝试去joebloggs.com/foobar,网址保持不变,从而进入到一个404页面(因为它不存在)。

我在做什么错?我是不是这样做的最佳方式,或者不按照它的意图使用.htaccess/mod_rewrite?

对不起,我喋喋不休,希望我给了足够的信息。感谢您为此付出的任何帮助和时间!

回答

0

第一套规则完全没用。更新第二套:

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^(www\.)?joebloggs\.com$ [NC] 
RewriteRule ^/?$ https://www.bloggs.com/foo [R=301,L,NC,QSA] 


RewriteCond %{HTTP_HOST} ^(www\.)?joebloggs\.com$ [NC] 
RewriteRule ^foo(.*)$ https://www.bloggs.com/foo/$1 [R=301,L,NC,QSA] 
+0

谢谢 - 我会试试看看它是如何工作的! 与此同时,第一套规则是什么使它无用?用你提供的套装替换它是否是多余的? – theRBF

+0

@theRBF变量'HTTP_HOST'没有收到URL路径。 – hjpotter92

+0

好的,谢谢@ hjpotter92,这个解释很有意义。我尝试了你的建议,但它对我并不起作用,但是......我刚刚编辑了一些有问题的代码,因为我意识到我呈现它的方式有点令人困惑,可能会误导你一点(对不起那)。总之,我想重定向'joebloggs.com/foobar'到'https:// www.bloggs.com/foo/bar',还有'joebloggs.com'到'https:// www .bloggs.com/joe'。 – theRBF