2015-11-05 96 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