原來以為這個問題很簡單, Google了一下發現網上的答案五花八門, 而且版本很混亂 有httpd的, ASP.net, url redirect的, url rewrite的. 經過多次嘗試各種組合, 終於試出了一個可行的解決方案, 值得在此記錄一下, 相信一定能幫到有類似需求的人. 本文例子為Ubuntu + apache2, 2020年, 2021年左右.
普通URL redirect到另一個網站
編輯/etc/apache2/sites-available裏面的一個site, 比如mysite, 需要redirect到anothersite.com, 那麼可以加上一行Redirect
<VirtualHost *:80>
ServerAdmin webmaster@localhost
...
ServerName mysite.com
ServerAlias www.mysite.com
DocumentRoot /var/www/html/mysite
Redirect / http://anothersite.com
...
修改完成後保存, 重啟apache2
sudo service apache2 restart
Redirect到一個子目錄
上面的方法可以redirect到不同的URL, 但是如果想redirect mysite.com到mysite.com/blog就不行. 我試了一下, 如果像上面那樣改動, 在瀏覽器輸入mysite.com就會被不停的改成mysite.com/blog/blog/blog… 無限循環. 很明顯, 改寫是recursive的. 那麼就不要用Redirect而是用RedirectMatch
<VirtualHost *:80>
ServerAdmin webmaster@localhost
...
ServerName mysite.com
ServerAlias www.mysite.com
DocumentRoot /var/www/html/mysite
RedirectMatch ^/$ /blog/
...
我也不太清楚apache2配置的語法細節, 但是以上是試過可行的方法. 最後一樣是重啟apache2讓配置生效
sudo service apache2 restart