2017-11-11 183 views
0

我们需要新服务器的解决方案,我们有一个主域名,例如example.com及其托管在VPS上的网站是在ASP.Net中的博客例如example.com/blog,博客位于子目录中并使用Wordpress。我们获得了新的服务器,并且我们希望将我们的博客移动到新的VPS上,以便我们在主域上创建子域,例如blog.example.com并更改控制面板中的A记录和blog.example.com工作正常,但我们希望显示像这样的example.com/blog/网址有什么方法可以将子域显示为子目录?主网站将保持在主服务器上的主机,我们只需要使用子域。因此,它显示像所有的环节,example.com/blog/post-name/子域作为URL中的子目录

+1

“反向代理”就是你要找的。如果您使用的是Apache并且启用了mod_rewrite和mod_proxy,那么它可以像RewriteRule一样简单,或者如果您将它用作前端,则可以在nginx中执行。 – janh

+0

谢谢,我已经安装了WHM并检查了mod_rewrite的apache模块,但我找不到它。但是我找到了启用的mod_proxy。我怎样才能激活mod_rewrite?通过.htaccess? –

+0

mod_rewrite不可用。如果在.htaccess中添加'RewriteEngine On',它会崩溃吗?如果是这样,你需要启用它,这可以像运行'a2enmod rewrite'作为root并重新启动apache一样简单。如果可行,请尝试[P-flag](http://httpd.apache.org/docs/current/rewrite/flags.html#flag_p)。 – janh

回答

0

在你的.htaccess试试这个:

RewriteEngine On 
RewriteRule ^blog/(.*) http://blog.example.com/$1 [P,L] 

它使用的mod_proxy(如果它不是可用会失败),以反向代理/ blog /下的流量。很明显,如果你有很多流量或两台服务器之间的连接不良,你会想要一些缓存,但通常效果很好。

你可能会设置

define('WP_HOME', 'http://example.com/blog'); 
define('WP_SITEURL', 'http://example.com/blog'); 

您在wp-config.php文件,因此内部链接指向你希望他们为工作URL。

+0

谢谢你的回复,我试过用上面的方法,但是我得到了404 Not Found错误。并且mod_proxy已启用。 –

+0

这很奇怪,它可以在多台服务器上正常工作。你看到目标服务器上的请求吗? 404通常指向mod_proxy不可用。你把这个放在WP规则上面吗?否则,WP将接管并呈现您的404. – janh

+0

我将顶级代码放在.htaccess中,并在wp-config.php文件中定义('WP_HOME'代码。该URL显示example.com/blog但404错误。是否必须在我的主域example.com上托管的其他服务器上或者blog.example.com服务器上的所有内容上做些什么? –