我在使用mod_rewrite的时候在.htaccess中有点新手,请原谅我。我已经搜索了很多答案,但也许我没有找到正确的地方,或者.htaccess甚至不是做这种事情的正确地方。Apache重定向(使用.htaccess)
假设我拥有两个域名:joebloggs.com和bloggs.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?
对不起,我喋喋不休,希望我给了足够的信息。感谢您为此付出的任何帮助和时间!
谢谢 - 我会试试看看它是如何工作的! 与此同时,第一套规则是什么使它无用?用你提供的套装替换它是否是多余的? – theRBF
@theRBF变量'HTTP_HOST'没有收到URL路径。 – hjpotter92
好的,谢谢@ hjpotter92,这个解释很有意义。我尝试了你的建议,但它对我并不起作用,但是......我刚刚编辑了一些有问题的代码,因为我意识到我呈现它的方式有点令人困惑,可能会误导你一点(对不起那)。总之,我想重定向'joebloggs.com/foobar'到'https:// www.bloggs.com/foo/bar',还有'joebloggs.com'到'https:// www .bloggs.com/joe'。 – theRBF