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

原来以为这个问题很简单, 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 Reply

Your email address will not be published. Required fields are marked *