我在使用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