在Apache2里怎樣redirect URL? | How to redirect URL using Apache2?

在Apache2里怎樣redirect URL?

原來以為這個問題很簡單, 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

Leave a Comment

Your email address will not be published.