在不切换DocumentRoot

时间:2018-09-11 03:45:44

标签: apache mod-rewrite

我正在从Wordpress博客切换到Hugo博客。我想在example.com上切换内容以显示/ var / www / new-blog中的内容。当前,它仅在/ var / www /中显示内容。我想将其保留在new-blog目录中,并且仍然是网站根目录中显示的内容。

但是我不想更改DocumentRoot,因为/ var / www /中有其他我不想影响的目录。

我需要使用mod_rewrite来做到这一点吗?

1 个答案:

答案 0 :(得分:1)

这是我从您的帖子中了解的内容。

当前情况

目录结构:

1) /var/wwww/
2) /var/www/new-blog/

1)DocumentRoot /var/www/
   因此http://example.com/指向/ var / www

2)可通过http://example.com/new-blog

到达

您想要的


解决方案

快速浏览一下,尽管Alias可以解决问题,但我自己尝试后就不会解决。

因此,请使用mod_rewrite(确保已加载mod_rewrite)。

RewriteEngine on
RewriteRule ^/$ http://example.com/new-blog [R,L]

通过这种方式,http://example.comhttp://example.com/都将重定向到new-blog目录。

任何其他请求(即http://example.com/dir)都将回复/var/www/dir中的内容。

值得注意的是,用户将看到其地址栏从http://example.com/变为http://example.com/new-blog


EXTRA解决方案

如果您不希望用户知道他们正在被重定向,则可以改为代理。

首先请确保已加载mod_proxymod_proxy_http。删除之前添加的RewriteRule,改为添加以下配置:

ProxyPassMatch   ^/$ http://example.com/new-blog
ProxyPassReverse ^/$ http://example.com/new-blog

很好的是,这两种解决方案都可以让您访问/​​ var / www下的文件或目录。只有http://example.com/被重定向或代理。